使用SmtpClient发送邮件报错

is_drools 2016-03-11 03:44:12

private static List<EmailRecordDto> SendMessage(List<EmailRecordDto> emails, AmazonEmailChannelDto channel)
{
_smtpClient.Host = channel.EmailServer;//smtp.163.com
_smtpClient.Port = channel.Port;//25
_smtpClient.EnableSsl = channel.EnableSsl;//启用
_smtpClient.UseDefaultCredentials = channel.UseDefaultCredentials;//默认
_smtpClient.Credentials = new NetworkCredential(channel.Account, channel.Password);
_smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

try
{
var mail = new MailMessage();
mail.SubjectEncoding = Encoding.GetEncoding(936); //Encoding.UTF8; 解决中文乱码问题
mail.BodyEncoding = Encoding.GetEncoding(936);// Encoding.UTF8; 解决中文乱码问题
//mail.From = new MailAddress(emails[0].FromEmail, emails[0].FromName);
mail.From = new MailAddress(channel.Account, "");

mail.IsBodyHtml = channel.IsBodyHtml;

if (emails.Count > 0)
{
foreach (var email in emails)
{
try
{
mail.Subject = email.Subject.Replace("\r", "").Replace("\n", "");
mail.Body = email.Body;
email.Attachements.ForEach(a =>
{
MemoryStream ms = new MemoryStream(a.Data);
System.Net.Mail.Attachment attachment;

if (a.FileName.EndsWith(".zip", StringComparison.CurrentCultureIgnoreCase) || a.FileName.EndsWith(".rar", StringComparison.CurrentCultureIgnoreCase))
{
attachment = new Attachment(ms, a.FileName, MediaTypeNames.Application.Zip);
}
else
{
attachment = new Attachment(ms, a.FileName, MediaTypeNames.Application.Octet);
}
mail.Attachments.Add(attachment);
});

mail.To.Add(new MailAddress(email.RCPTEmail, email.RCPTName));

_smtpClient.Send(mail);//此处报错 如果用QQ邮箱异常信息为:”操作超时“

email.RecordStatus = EmailRecordStatus.Sent;
}
catch (Exception ex)
{
Logger.Write(string.Format("发送邮件时发生异常,异常信息:{0}", ex.ToString()));
email.RecordStatus = EmailRecordStatus.Failed;
}
}
}

if (_smtpClient != null)
{
_smtpClient.Dispose();
_smtpClient = null;
}
}
catch (Exception ex)
{
Logger.Write(string.Format("发送邮件时发生异常,异常信息:{0}", ex.ToString()));
}

return emails;
}

使用163邮箱的异常



求解是我代码有问题,还是怎么回事???
...全文
543 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
is_drools 2016-03-17
  • 打赏
  • 举报
回复
好吧!最终问题解决了,公司防火墙的问题...谢谢各位了...
tcmakebest 2016-03-12
  • 打赏
  • 举报
回复
楼主的代码有点乱,如果要发送给几个人,只要多添加几个地址就好,为什么要每人发一遍呢
秋的红果实 2016-03-11
  • 打赏
  • 举报
回复
写得很明白了,要查看163.com的help
is_drools 2016-03-11
  • 打赏
  • 举报
回复
引用 1 楼 zhuankeshumo 的回复:
你 163邮箱开启了POP3/IMAP/SMTP服务?
开启了
is_drools 2016-03-11
  • 打赏
  • 举报
回复
引用 3 楼 is_drools 的回复:
[quote=引用 1 楼 zhuankeshumo 的回复:] 你 163邮箱开启了POP3/IMAP/SMTP服务?
开启了[/quote] 为什么不可以删掉我自己的回复呢?上面引用错了...
is_drools 2016-03-11
  • 打赏
  • 举报
回复
引用 楼主 is_drools 的回复:

private static List<EmailRecordDto> SendMessage(List<EmailRecordDto> emails, AmazonEmailChannelDto channel)
        {
            _smtpClient.Host = channel.EmailServer;//smtp.163.com
            _smtpClient.Port = channel.Port;//25
            _smtpClient.EnableSsl = channel.EnableSsl;//启用
            _smtpClient.UseDefaultCredentials = channel.UseDefaultCredentials;//默认
            _smtpClient.Credentials = new NetworkCredential(channel.Account, channel.Password);
            _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

            try
            {
                var mail = new MailMessage();
                mail.SubjectEncoding = Encoding.GetEncoding(936); //Encoding.UTF8;  解决中文乱码问题
                mail.BodyEncoding = Encoding.GetEncoding(936);// Encoding.UTF8; 解决中文乱码问题
                //mail.From = new MailAddress(emails[0].FromEmail, emails[0].FromName);
                mail.From = new MailAddress(channel.Account, "");

                mail.IsBodyHtml = channel.IsBodyHtml;

                if (emails.Count > 0)
                {   
                    foreach (var email in emails)
                    {
                        try
                        {
                            mail.Subject = email.Subject.Replace("\r", "").Replace("\n", "");
                            mail.Body = email.Body;
                            email.Attachements.ForEach(a =>
                                {
                                    MemoryStream ms = new MemoryStream(a.Data);
                                    System.Net.Mail.Attachment attachment;

                                    if (a.FileName.EndsWith(".zip", StringComparison.CurrentCultureIgnoreCase) || a.FileName.EndsWith(".rar", StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        attachment = new Attachment(ms, a.FileName, MediaTypeNames.Application.Zip);
                                    }
                                    else
                                    {
                                        attachment = new Attachment(ms, a.FileName, MediaTypeNames.Application.Octet);
                                    }
                                    mail.Attachments.Add(attachment);
                                });

                            mail.To.Add(new MailAddress(email.RCPTEmail, email.RCPTName));
  
                            _smtpClient.Send(mail);//此处报错   如果用QQ邮箱异常信息为:”操作超时“

                            email.RecordStatus = EmailRecordStatus.Sent;
                        }
                        catch (Exception ex)
                        {
                            Logger.Write(string.Format("发送邮件时发生异常,异常信息:{0}", ex.ToString()));
                            email.RecordStatus = EmailRecordStatus.Failed;
                        }
                    }
                }

                if (_smtpClient != null)
                {
                    _smtpClient.Dispose();
                    _smtpClient = null;
                }
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("发送邮件时发生异常,异常信息:{0}", ex.ToString()));
            }

            return emails;
        }
使用163邮箱的异常 求解是我代码有问题,还是怎么回事???
引用 楼主 is_drools 的回复:

private static List<EmailRecordDto> SendMessage(List<EmailRecordDto> emails, AmazonEmailChannelDto channel)
        {
            _smtpClient.Host = channel.EmailServer;//smtp.163.com
            _smtpClient.Port = channel.Port;//25
            _smtpClient.EnableSsl = channel.EnableSsl;//启用
            _smtpClient.UseDefaultCredentials = channel.UseDefaultCredentials;//默认
            _smtpClient.Credentials = new NetworkCredential(channel.Account, channel.Password);
            _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

            try
            {
                var mail = new MailMessage();
                mail.SubjectEncoding = Encoding.GetEncoding(936); //Encoding.UTF8;  解决中文乱码问题
                mail.BodyEncoding = Encoding.GetEncoding(936);// Encoding.UTF8; 解决中文乱码问题
                //mail.From = new MailAddress(emails[0].FromEmail, emails[0].FromName);
                mail.From = new MailAddress(channel.Account, "");

                mail.IsBodyHtml = channel.IsBodyHtml;

                if (emails.Count > 0)
                {   
                    foreach (var email in emails)
                    {
                        try
                        {
                            mail.Subject = email.Subject.Replace("\r", "").Replace("\n", "");
                            mail.Body = email.Body;
                            email.Attachements.ForEach(a =>
                                {
                                    MemoryStream ms = new MemoryStream(a.Data);
                                    System.Net.Mail.Attachment attachment;

                                    if (a.FileName.EndsWith(".zip", StringComparison.CurrentCultureIgnoreCase) || a.FileName.EndsWith(".rar", StringComparison.CurrentCultureIgnoreCase))
                                    {
                                        attachment = new Attachment(ms, a.FileName, MediaTypeNames.Application.Zip);
                                    }
                                    else
                                    {
                                        attachment = new Attachment(ms, a.FileName, MediaTypeNames.Application.Octet);
                                    }
                                    mail.Attachments.Add(attachment);
                                });

                            mail.To.Add(new MailAddress(email.RCPTEmail, email.RCPTName));
  
                            _smtpClient.Send(mail);//此处报错   如果用QQ邮箱异常信息为:”操作超时“

                            email.RecordStatus = EmailRecordStatus.Sent;
                        }
                        catch (Exception ex)
                        {
                            Logger.Write(string.Format("发送邮件时发生异常,异常信息:{0}", ex.ToString()));
                            email.RecordStatus = EmailRecordStatus.Failed;
                        }
                    }
                }

                if (_smtpClient != null)
                {
                    _smtpClient.Dispose();
                    _smtpClient = null;
                }
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("发送邮件时发生异常,异常信息:{0}", ex.ToString()));
            }

            return emails;
        }
使用163邮箱的异常 求解是我代码有问题,还是怎么回事???
开启了
newtee 2016-03-11
  • 打赏
  • 举报
回复
你 163邮箱开启了POP3/IMAP/SMTP服务?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧