用qq的smtp服务发送邮件报错,请高手指教

时间:2022-02-12 18:11:47
代码中使用了,验证方式
client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);

但是报错:
邮件发送失败:Mailbox name not allowed. The server response was: Requested action not taken: Local user only,smtp2,DNGowKALpAEYGxhNauo7Ag--.136S2 1293425432

网上说是因为国内的smtp服务器为了防止垃圾邮件 实行了首先登录验证措施

谁知道怎么解决这个问题? 最好给出一段代码 哈

20 个解决方案

#1


以前都没听说过,难道是今年改了?
去年,用过QQ的邮箱,与163的一样,能发能收

#2


你是不是用的jmail啊,还是用的socket?

#3


引用 2 楼 victory1124 的回复:
你是不是用的jmail啊,还是用的socket?


我用的是System.Net.Mail 使用SmtpClient 发送的

#4


引用 1 楼 yangglemu 的回复:
以前都没听说过,难道是今年改了?
去年,用过QQ的邮箱,与163的一样,能发能收



你现在调用qq的smtp 服务 使用SmtpClient 可以发送吗

#5


要试试,你==啊

#6


试了下
QQ发邮件不行,这是服务器返回的提示:mail from address must be same as authorization user

用163可以发出去

#7


搞定!
不小心发现QQ给我发了个邮件,内容是我试图设置SMTP服务器,如果确实要开启SMTP和POP3服务,就点一个连接去开启,我开启后,就可以发邮件出去了
呵呵,还不算麻烦

#8


引用 7 楼 yangglemu 的回复:
搞定!
不小心发现QQ给我发了个邮件,内容是我试图设置SMTP服务器,如果确实要开启SMTP和POP3服务,就点一个连接去开启,我开启后,就可以发邮件出去了
呵呵,还不算麻烦


哦?那就奇怪了 ,我也在qq邮箱的设置页面开启了smtp服务,为啥我的不行那?
难道和qq级别还有关系?

#9


计算机名称要改为英文的。不能是中文的。(smtp的一个bug)
qq邮箱挺大容量。平常拿到存资料。
我是把写的程序放到[发送到]。
这样保存一些文件挺不错的。

#10


引用 9 楼 zanfeng 的回复:
计算机名称要改为英文的。不能是中文的。(smtp的一个bug)
qq邮箱挺大容量。平常拿到存资料。
我是把写的程序放到[发送到]。
这样保存一些文件挺不错的。


计算机名称要改为英文的? 什么意思

#11


我刚做了一个QQ邮件发送的给你代码看看

MailAddress EmailFrom = new MailAddress("发送邮箱地址");
        MailAddress EmailTo = new MailAddress("接受邮箱地址");
        MailMessage mailMsg = new MailMessage(EmailFrom, EmailTo);
        mailMsg.Subject = "测试邮件";
        mailMsg.Body = "此为测试邮件,可以忽略掉";
        mailMsg.Priority = MailPriority.High;

        SmtpClient spClient = new SmtpClient("smtp.qq.com");
        spClient.Credentials = new System.Net.NetworkCredential("发送邮箱地址","发送邮箱密码");
        spClient.Send(mailMsg);

#12


引用 11 楼 pm90125 的回复:
我刚做了一个QQ邮件发送的给你代码看看
C# code

MailAddress EmailFrom = new MailAddress("发送邮箱地址");
        MailAddress EmailTo = new MailAddress("接受邮箱地址");
        MailMessage mailMsg = new MailMessage(EmailFrom, Ema……


谢谢  我的也是这么写的 
你的可以发送吗?
你发送qq多少级了

#13


try
            {
                SmtpClient client = new SmtpClient("smtp.qq.com");
                client.UseDefaultCredentials = false;
                client.Credentials = new System.Net.NetworkCredential("邮件地址", "密码");
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                MailAddress from = new MailAddress("发件人");
                MailAddress to = new MailAddress("收件人");
                MailMessage mail = new MailMessage(from,to);
                mail.Subject = "Title";
                mail.BodyEncoding = System.Text.Encoding.Default;
                mail.Body = "oh,shit";
                mail.IsBodyHtml = true;
                client.Send(mail);
                Response.Write("<script>alert('发送成功');</script>");
            }
            catch (Exception ex)
            {
                Response.Write("<script>alert('" + ex.Message + "');</script>");
            }

#14


用QQ邮箱发邮件和QQ等级没关系

要手动的在邮箱里开启POP3/SMTP服务

#15


#region 发送邮件函数体

            SmtpClient client = new SmtpClient(strSmtpServer);
            client.Host = strSmtpServer;
            client.UseDefaultCredentials = true;
           
            client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            Byte[] b = Encoding.Default.GetBytes(strEmailBody);
            strEmailBody = Encoding.GetEncoding("gb2312").GetString(b).ToString();

            StringBuilder sBody = new StringBuilder();
            string[] stemp = strEmailBody.Split('\n');//去掉回车换行符
            foreach (string t in stemp)
            {
                sBody.Append(t);
            }

            MailMessage message = new MailMessage(strFrom,strTo, strEmailSubject, sBody.ToString());
            message.BodyEncoding = Encoding.UTF8;
            message.IsBodyHtml = true;
            message.Priority = MailPriority.High;
            if (sAttachFileName != "")
                message.Attachments.Add(new Attachment(sAttachFileName));
            try
            {
                client.Send(message);
                
                return strTo + "-邮件发送成功!\r\n";
            }
            catch (Exception e)
            {
                return strTo + "邮件发送失败:" + e.Message.ToString() + "\r\n";
            }
 #endregion

感觉我的代码和大家的差不多啊
而且 我用来发送的qq账户 已经在设置里面 开启了POP3/SMTP服务

#16


WebProxy类:当程序需要通过代理服务器进行通信时,使用WebProxy类。
通过该类,可以指定代理服务器的名称,进行通信所用的端口,以及对于本地通信是否使用代码服务器。
邮件发送:     //设置代理服务器
             WebProxy proxy = new WebProxy();
             proxy.UseDefaultCredentials = true;
             proxy.BypassProxyOnLocal = true;
             GlobalProxySelection.Select = proxy;
             //设置Smtp
             SmtpClient sc = new SmtpClient();
             sc.Host = "【SMTP发送邮件服务器】";
             sc.DeliveryMethod = SmtpDeliveryMethod.Network;
             MailMessage m = new MailMessage("【自己邮箱地址】","【对方邮箱地址】");
             MailAddress copy = new MailAddress("【自己邮箱地址】");
             m.CC.Add(copy);
m.Body = 【邮件正文控件如txt1等】.Text;//邮件的正文格式为text格式。还有html格式需要其他方法。
//还可以指定邮件的重要C性【m.Priority = MailPriority.High;】High为高,还有Low,Normal。
//这边“m”还可以点出很多属性,比如说邮件的主题:m.Subject等。
//m.AlternateViews.Add(new Attachment("【附件路径】"));//邮件附件。
             //身份验证
             NetworkCredential myCred = new NetworkCredential("【自己邮箱帐号】","【自己邮箱密码】");
             sc.Credentials = myCred;
             sc.Send(m);
             MessageBox.Show("发送成功");

#17


MailAddress copy = new MailAddress("【自己邮箱地址】");
这个是抄送,可以去掉。

#18


引用 11 楼 pm90125 的回复:

我刚做了一个QQ邮件发送的给你代码看看
C# code

MailAddress EmailFrom = new MailAddress("发送邮箱地址");
MailAddress EmailTo = new MailAddress("接受邮箱地址");
MailMessage mailMsg = new MailMessage(EmailFrom, Ema……



谢谢 我的也是这么写的  
你的可以发送吗?
你发送qq多少级了



 我的发送成功了!应该是你设置有问题

#19


引用 10 楼 fireswallow 的回复:
引用 9 楼 zanfeng 的回复:

计算机名称要改为英文的。不能是中文的。(smtp的一个bug)
qq邮箱挺大容量。平常拿到存资料。
我是把写的程序放到[发送到]。
这样保存一些文件挺不错的。


计算机名称要改为英文的? 什么意思
.net 发送邮件的一个bug。
计算名。必须是英文的。中文的就会发送失败。

#20



$smtp = "smtp.qq.com"; 
$check =1; 


if ($check) { 
$username = "42494101@qq.com"; 
$password = "88888888";  


$s_from = "42494101@qq.com";  
############################################### 

//连接服务器 
$fp = fsockopen ( "$smtp", 25, $errno, $errstr, 30); 
if (!$fp ) return "联接服务器失败".__LINE__; 
set_socket_blocking($fp, true ); 

$lastmessage=fgets($fp,512); 
if ( substr($lastmessage,0,3) != 220 ) return "错误信息:".$lastmessage.__LINE__; 



哪位大侠帮我看看这个问题在哪里,怎么我发不了邮件,

提示为
Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.qq.com:25 in /www/users/0511w.com/send.php on line 39
联接服务器失败40

#1


以前都没听说过,难道是今年改了?
去年,用过QQ的邮箱,与163的一样,能发能收

#2


你是不是用的jmail啊,还是用的socket?

#3


引用 2 楼 victory1124 的回复:
你是不是用的jmail啊,还是用的socket?


我用的是System.Net.Mail 使用SmtpClient 发送的

#4


引用 1 楼 yangglemu 的回复:
以前都没听说过,难道是今年改了?
去年,用过QQ的邮箱,与163的一样,能发能收



你现在调用qq的smtp 服务 使用SmtpClient 可以发送吗

#5


要试试,你==啊

#6


试了下
QQ发邮件不行,这是服务器返回的提示:mail from address must be same as authorization user

用163可以发出去

#7


搞定!
不小心发现QQ给我发了个邮件,内容是我试图设置SMTP服务器,如果确实要开启SMTP和POP3服务,就点一个连接去开启,我开启后,就可以发邮件出去了
呵呵,还不算麻烦

#8


引用 7 楼 yangglemu 的回复:
搞定!
不小心发现QQ给我发了个邮件,内容是我试图设置SMTP服务器,如果确实要开启SMTP和POP3服务,就点一个连接去开启,我开启后,就可以发邮件出去了
呵呵,还不算麻烦


哦?那就奇怪了 ,我也在qq邮箱的设置页面开启了smtp服务,为啥我的不行那?
难道和qq级别还有关系?

#9


计算机名称要改为英文的。不能是中文的。(smtp的一个bug)
qq邮箱挺大容量。平常拿到存资料。
我是把写的程序放到[发送到]。
这样保存一些文件挺不错的。

#10


引用 9 楼 zanfeng 的回复:
计算机名称要改为英文的。不能是中文的。(smtp的一个bug)
qq邮箱挺大容量。平常拿到存资料。
我是把写的程序放到[发送到]。
这样保存一些文件挺不错的。


计算机名称要改为英文的? 什么意思

#11


我刚做了一个QQ邮件发送的给你代码看看

MailAddress EmailFrom = new MailAddress("发送邮箱地址");
        MailAddress EmailTo = new MailAddress("接受邮箱地址");
        MailMessage mailMsg = new MailMessage(EmailFrom, EmailTo);
        mailMsg.Subject = "测试邮件";
        mailMsg.Body = "此为测试邮件,可以忽略掉";
        mailMsg.Priority = MailPriority.High;

        SmtpClient spClient = new SmtpClient("smtp.qq.com");
        spClient.Credentials = new System.Net.NetworkCredential("发送邮箱地址","发送邮箱密码");
        spClient.Send(mailMsg);

#12


引用 11 楼 pm90125 的回复:
我刚做了一个QQ邮件发送的给你代码看看
C# code

MailAddress EmailFrom = new MailAddress("发送邮箱地址");
        MailAddress EmailTo = new MailAddress("接受邮箱地址");
        MailMessage mailMsg = new MailMessage(EmailFrom, Ema……


谢谢  我的也是这么写的 
你的可以发送吗?
你发送qq多少级了

#13


try
            {
                SmtpClient client = new SmtpClient("smtp.qq.com");
                client.UseDefaultCredentials = false;
                client.Credentials = new System.Net.NetworkCredential("邮件地址", "密码");
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                MailAddress from = new MailAddress("发件人");
                MailAddress to = new MailAddress("收件人");
                MailMessage mail = new MailMessage(from,to);
                mail.Subject = "Title";
                mail.BodyEncoding = System.Text.Encoding.Default;
                mail.Body = "oh,shit";
                mail.IsBodyHtml = true;
                client.Send(mail);
                Response.Write("<script>alert('发送成功');</script>");
            }
            catch (Exception ex)
            {
                Response.Write("<script>alert('" + ex.Message + "');</script>");
            }

#14


用QQ邮箱发邮件和QQ等级没关系

要手动的在邮箱里开启POP3/SMTP服务

#15


#region 发送邮件函数体

            SmtpClient client = new SmtpClient(strSmtpServer);
            client.Host = strSmtpServer;
            client.UseDefaultCredentials = true;
           
            client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            Byte[] b = Encoding.Default.GetBytes(strEmailBody);
            strEmailBody = Encoding.GetEncoding("gb2312").GetString(b).ToString();

            StringBuilder sBody = new StringBuilder();
            string[] stemp = strEmailBody.Split('\n');//去掉回车换行符
            foreach (string t in stemp)
            {
                sBody.Append(t);
            }

            MailMessage message = new MailMessage(strFrom,strTo, strEmailSubject, sBody.ToString());
            message.BodyEncoding = Encoding.UTF8;
            message.IsBodyHtml = true;
            message.Priority = MailPriority.High;
            if (sAttachFileName != "")
                message.Attachments.Add(new Attachment(sAttachFileName));
            try
            {
                client.Send(message);
                
                return strTo + "-邮件发送成功!\r\n";
            }
            catch (Exception e)
            {
                return strTo + "邮件发送失败:" + e.Message.ToString() + "\r\n";
            }
 #endregion

感觉我的代码和大家的差不多啊
而且 我用来发送的qq账户 已经在设置里面 开启了POP3/SMTP服务

#16


WebProxy类:当程序需要通过代理服务器进行通信时,使用WebProxy类。
通过该类,可以指定代理服务器的名称,进行通信所用的端口,以及对于本地通信是否使用代码服务器。
邮件发送:     //设置代理服务器
             WebProxy proxy = new WebProxy();
             proxy.UseDefaultCredentials = true;
             proxy.BypassProxyOnLocal = true;
             GlobalProxySelection.Select = proxy;
             //设置Smtp
             SmtpClient sc = new SmtpClient();
             sc.Host = "【SMTP发送邮件服务器】";
             sc.DeliveryMethod = SmtpDeliveryMethod.Network;
             MailMessage m = new MailMessage("【自己邮箱地址】","【对方邮箱地址】");
             MailAddress copy = new MailAddress("【自己邮箱地址】");
             m.CC.Add(copy);
m.Body = 【邮件正文控件如txt1等】.Text;//邮件的正文格式为text格式。还有html格式需要其他方法。
//还可以指定邮件的重要C性【m.Priority = MailPriority.High;】High为高,还有Low,Normal。
//这边“m”还可以点出很多属性,比如说邮件的主题:m.Subject等。
//m.AlternateViews.Add(new Attachment("【附件路径】"));//邮件附件。
             //身份验证
             NetworkCredential myCred = new NetworkCredential("【自己邮箱帐号】","【自己邮箱密码】");
             sc.Credentials = myCred;
             sc.Send(m);
             MessageBox.Show("发送成功");

#17


MailAddress copy = new MailAddress("【自己邮箱地址】");
这个是抄送,可以去掉。

#18


引用 11 楼 pm90125 的回复:

我刚做了一个QQ邮件发送的给你代码看看
C# code

MailAddress EmailFrom = new MailAddress("发送邮箱地址");
MailAddress EmailTo = new MailAddress("接受邮箱地址");
MailMessage mailMsg = new MailMessage(EmailFrom, Ema……



谢谢 我的也是这么写的  
你的可以发送吗?
你发送qq多少级了



 我的发送成功了!应该是你设置有问题

#19


引用 10 楼 fireswallow 的回复:
引用 9 楼 zanfeng 的回复:

计算机名称要改为英文的。不能是中文的。(smtp的一个bug)
qq邮箱挺大容量。平常拿到存资料。
我是把写的程序放到[发送到]。
这样保存一些文件挺不错的。


计算机名称要改为英文的? 什么意思
.net 发送邮件的一个bug。
计算名。必须是英文的。中文的就会发送失败。

#20



$smtp = "smtp.qq.com"; 
$check =1; 


if ($check) { 
$username = "42494101@qq.com"; 
$password = "88888888";  


$s_from = "42494101@qq.com";  
############################################### 

//连接服务器 
$fp = fsockopen ( "$smtp", 25, $errno, $errstr, 30); 
if (!$fp ) return "联接服务器失败".__LINE__; 
set_socket_blocking($fp, true ); 

$lastmessage=fgets($fp,512); 
if ( substr($lastmessage,0,3) != 220 ) return "错误信息:".$lastmessage.__LINE__; 



哪位大侠帮我看看这个问题在哪里,怎么我发不了邮件,

提示为
Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.qq.com:25 in /www/users/0511w.com/send.php on line 39
联接服务器失败40

#21