最近开发一个项目,需要给客户发送报告邮件,在开发中遇到本地调试发送邮件一切正常,但当部署到服务器上的时候,一直返回“发送失败”,在此记录,以免以后采坑

webapi 端代码:

         /// <summary>
/// 发送邮件
/// </summary>
/// <param name="fromMail">发件人邮箱</param>
/// <param name="toMail">收件人邮箱</param>
/// <param name="authorizationCode">发件人授权码</param>
/// <param name="replyTo">收件人回复邮件默认接收地址(不设置也可以)</param>
/// <param name="ccMail">邮件抄送人</param>
/// <param name="filePath">附件地址</param>
/// <param name="sendPeopleCall">收件人称呼</param>
/// <param name="collectSampleDate">收样时间</param>
/// <returns></returns>
public MsgModel SendMails(string fromMail,List<string> toMail,string authorizationCode,string replyTo, List<string> ccMail,List<string> filePath,string sendPeopleCall,string collectSampleDate)
{ try
{
//实例化发送邮件类
MailMessage mailMessage = new MailMessage();
//邮件的优先级 分为 low normal high 通常用Normal即可
mailMessage.Priority = MailPriority.Normal;
//发送人邮件地址
mailMessage.From = new MailAddress(fromMail);
//收件人邮件地址 //考虑群发邮件
foreach(var r in toMail)
{
mailMessage.To.Add(new MailAddress(r));
}
if (replyTo == "" || replyTo == null)
{
replyTo = fromMail;
} //对方回复邮件时默认的接收地址(可以不设置)
//mailMessage.ReplyTo = new MailAddress(replyTo);
if (ccMail != null)
{
//邮件抄送 支持 群发 抄送
foreach (var r in ccMail)
{
mailMessage.CC.Add(r);
}
}
//如果邮件标题包含中文,这里要设置编码方式 否则会出现乱码
mailMessage.SubjectEncoding = Encoding.GetEncoding();
//邮件正文是否是Html 格式
mailMessage.IsBodyHtml = true;
//邮件标题
mailMessage.Subject = $@" REPORT-{collectSampleDate}";
//邮件内容
mailMessage.Body = $@"
Dear {sendPeopleCall},
"; mailMessage.Attachments.Clear();
if (filePath != null&&filePath.Count>)
{
foreach (var r in filePath)
{
var urls = System.AppDomain.CurrentDomain.BaseDirectory.ToString() + r;//获取项目的绝对
//将附件添加到邮件
mailMessage.Attachments.Add(new Attachment(urls));
//获取设置此电子邮件的发送通知
mailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
} }
//实例化 SmtpClient类
SmtpClient client = new SmtpClient();
client.Host = GetClientHost(fromMail);
//使用安全加密连接
client.EnableSsl = true;
client.Port = ;//默认是25 此处设置成587
//不和请求一块发送
client.UseDefaultCredentials = false; //client.DeliveryMethod = SmtpDeliveryMethod.Network; //验证发送人身份(发件人的邮箱,邮箱里生成的授权码)
client.Credentials = new NetworkCredential(fromMail,authorizationCode); //如果发送失败,SMTP 服务器将发送 失败邮件告知fromEmail
mailMessage.DeliveryNotificationOptions= DeliveryNotificationOptions.OnFailure; client.Send(mailMessage); return new MsgModel
{
Status = true,
Msg = "发送邮件成功" ,
Data = ""
};
}
catch(Exception ex)
{
return new MsgModel
{
Status = false,
Msg = "发送邮件失败!错误:" + ex.Message,
Data=""
};
} }
         /// <summary>
/// 根据发送邮箱 识别发件服务器地址
/// </summary>
/// <param name="fromEmail"></param>
/// <returns></returns>
public string GetClientHost(string fromEmail)
{
var host = "";
if (fromEmail.Length != )
{
var addressStr = fromEmail.Trim().Split(new char[] { '@','.'});
switch (addressStr[])
{
case "":
host = "smtp.163.com";
break;
case "":
host = "smtp.126.com";
break;
case "qq":
host = "smtp.qq.com";
break;
case "gmail":
host = "smtp.gmail.com";
break;
case "hotmail":
host = "smtp.live.com";//outlook邮箱
//client.Port = 587;
break;
case "foxmail":
host = "smtp.foxmail.com";
break;
case "sina":
host = "smtp.sina.com.cn";
break;
default:
host = "smtp.exmail.qq.com";//qq企业邮箱
break; }
}
return host;
}

发送邮箱,以及授权码都放在配置文件webconfig 中,这里不展示。

另外:项目是部署到阿里服务器的,此项目邮件发送端口是587,因此在阿里服务器需要设置允许端口587进出。

在此基础上本地调试可正常发送,部署到服务器上就发送失败,经过查阅相关博客,不断的尝试其他博客的解决方法,其中一个博客中说:本地调试发送了邮件成功后,tx那边认为你当前发送邮件的地址为常用的邮件发送地址,再部署到服务器上的时候,tx就认为你是发送广告,就被禁止当前地址发送邮箱,需要解除禁止。禁止一时半会不知道咋去解禁,于是尝试着替换一个qq邮箱账号进行发送邮件,结果真的是发送成功了。

.net 发送qq邮件的更多相关文章

  1. CI框架使用PHPmail插件发送QQ邮件:

    有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...

  2. 5分钟 wamp下php phpmaile发送qq邮件 2015最新方法说明

    13:40 2015/11/20 5分钟 wamp下php phpmaile发送qq邮件 2015最新方法说明 关键点:现在qq邮箱开通smtp服务后会给你一个很长的独立新密码,发邮件配置中的密码需要 ...

  3. 【python】脚本连续发送QQ邮件

    今天习得用python写一个连续发送QQ邮件的脚本,经过测试,成功给国内外的服务器发送邮件,包括QQ邮箱.163邮箱.google邮箱,香港科技大学的邮箱和爱丁堡大学的邮箱.一下逐步解答相关技巧. 首 ...

  4. Java发送QQ邮件

    面试的时候被问到这个问题,别人问我用Java发过邮件没有,被问得一脸懵逼.然后就研究了一下,不是很难,按照网上的方法折腾了几天就搞出来了. 首先,使用QQ邮箱发送邮件之前需要在邮箱里面配置,开启pop ...

  5. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  6. java mail Received fatal alert: handshake_failure java 无法发送邮件问题 java 发送qq邮件(含源码)

     java 无法发送邮件问题 java 发送qq邮件 报错:java mail Received fatal alert: handshake_failure (使用ssl) javax.mail.M ...

  7. Quartz.NET浅谈一 : 简单Job使用(定时发送QQ邮件)

    Quartz.NET是一个全功能的开源作业调度系统,可用于从最小的应用程序到大型企业系统. 直接上代码吧... 一.新建一个控制台项目 略过 二.安装Nuget包 三.创建发送邮箱辅助工具类 stat ...

  8. 电子邮件协议及GO发送QQ邮件

    目录 一.电子邮件的工作机制 1.1 SMTP 1.2 POP3 1.3 IMAP 二.邮件地址 三.MIME信息 四.使用golang发送qq邮件 一.电子邮件的工作机制 提供电子邮件服务的协议叫做 ...

  9. java代码如何发送QQ邮件

    近来想写一个qq之间互相发送邮件的工具.奈何一直报错服务错误: org.apache.commons.mail.EmailException: Sending the email to the fol ...

  10. 使用python发送QQ邮件

    这里用到了Python的两个包来发送邮件: smtplib 和 email . Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”.使用的 MIMEText ...

随机推荐

  1. C#使用 OleDbConnection 连接读取Excel

    /// <summary> /// 读取Excel中数据 /// </summary> /// <param name="strExcelPath"& ...

  2. 微服务架构 SpringBoot(一)

    spring Boot:官网地址 https://spring.io/ 由来: 随着spring组件功能的强大,配置文件也越来越复杂繁琐,背离了spring公司的简洁快速开发原理,2015年就推出Sp ...

  3. vue-cli项目中引入第三方插件

    前言 最近有小伙伴问道如何在vue-cli项目中引入第三方插件或者库,例如如果想在项目中使用jQuery中的Ajax请求数据呢?或者我想使用Bootstrap框架呢?等等这些问题,本篇博客将带你学习如 ...

  4. 用canvas写飞机大战

    1.老规矩,当我们开始做项目的时候,我们第一步就是要进行分析,当我们的游戏开始做的时候我们要把一整个游戏分成五个阶段来写: 五个阶段和我方飞机的生命值,还有游戏的得分情况如下: //游戏欢迎状态 co ...

  5. 2、MVC+IOC容器+ORM结合

    1.常规写法,难道我们每次都new一个服务,如下面的UserService和CompanyService然后调用服务的Find方法去操作,为什么我们不让UserService和CompanyServi ...

  6. SpringCloud-使用熔断器仪表盘监控熔断

    场景 SpringCloud-使用熔断器防止服务雪崩-Ribbon和Feign方式(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  7. Kafka实战(七) - 优雅地部署 Kafka 集群

    既然是集群,必然有多个Kafka节点,只有单节点构成的Kafka伪集群只能用于日常测试,不可能满足线上生产需求. 真正的线上环境需要考量各种因素,结合自身的业务需求而制定.看一些考虑因素(以下顺序,可 ...

  8. Dubbo学习笔记-RPC扩展和本地Mock

    1.Dubbo介绍 Dubbo,一个是一款高性能Java RPC框架.私以为有中文官方文档,就不再重复介绍了 2.RPC扩展-本地存根stub RPC扩展功能:提前效验参数,缓存调用结果,日志记录等等 ...

  9. Jmeter+Ant+Jenkins集成抛出异常java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage

    一.问题描述 二.解决方法 下载javax.mail.jar插件,并将该插件放到%ANT_HOME%\lib目录下即可解决,下载地址:https://javaee.github.io/javamail ...

  10. Centos下使用yum命令报错 except KeyboardInterrupt, e: SyntaxError: invalid syntax

    使用yum命令报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^ SyntaxError: invalid ...