之前在公司遇到一个需求需要发送邮件并需要添加附件,我当时用了QQ的SMTP实现了发送邮件的功能。现在记录一下。并做了简单的封装。有不对的地方,请大家多多包涵,一起交流学习

一、准备工作,
要使用SMTP发送邮件,首先需要去QQ的邮箱配置。步骤如下
1、打开QQ邮箱
2、点击设置

3、点击账户

4、开启下图这两个服务,并拿到授权码,之后发送邮件的地方需要。

代码如下,已做了简单的封装

下面的邮件信息,我没有直接写在发送代码中,而是写在了配置文件web.config中,这样的好处是:在以后的维护中,需要修改邮件信息的话,直接修改配置文件就行,不用修改代码了,

  //配置文件web.config<add key="MailSMTPServer" value="smtp.qq.com" />//SMTP主机域<add key="MailSMTPPort" value="25" />// 发送邮件的端口<add key="MailSender" value="" />//value填写你的QQ邮件<add key="MailSenderPwd" value="" />//value填写你的邮件的授权码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Configuration;namespace EmailSend
{public  class EmailSender{//读取上面配置文件中的信息string strMeEmail = ConfigurationManager.AppSettings.Get("MailSender");//邮件来自该邮件string strPWD = ConfigurationManager.AppSettings.Get("MailSenderPwd");   //该邮件授权码string strServer = ConfigurationManager.AppSettings.Get("MailSMTPServer"); //SMTP主机域int strPort = Convert.ToInt32(ConfigurationManager.AppSettings.Get("MailSMTPPort")); //SMTP端口MailMessage mailMsg;SmtpClient smtpClient;/// <summary>/// 构造函数/// </summary>/// <param name="strsubject">邮件主题</param>/// <param name="strto">收件人</param>/// <param name="strcontent">邮件内容</param>public EmailSender(string strsubject,string strto,string strcontent){mailMsg = new MailMessage(strMeEmail, strto);mailMsg.Subject = strsubject;mailMsg.SubjectEncoding = Encoding.UTF8;mailMsg.Priority = MailPriority.Normal;mailMsg.IsBodyHtml = true;//如果你的邮件内容需要拼接HTML的话,改属性设置为truemailMsg.Body = strcontent;mailMsg.BodyEncoding = Encoding.UTF8;}/// <summary>/// 增加附件/// </summary>/// <param name="path">附件路径</param>public void AddAttchment(string path){  try{Attachment attachMent;attachMent = new Attachment(path);mailMsg.Attachments.Add(attachMent);}catch(Exception ex){throw new Exception(ex.Message);}}/// <summary>/// 邮件发送/// </summary>/// <returns>是否发送成功</returns>public bool SendEmail(){smtpClient = new SmtpClient(strServer,strPort);smtpClient.UseDefaultCredentials = false;                           //是否使用默认身份验证(如果你的SMTP不需要身份验证,可以设置此项为TRUE,否则就为false),为false时,就需要身份验证,使用下面的CredentialssmtpClient.EnableSsl=true;                                          //是否加密链接,这里必须设置为true,否则无法发送邮件smtpClient.DeliveryMethod= SmtpDeliveryMethod.Network;              //指定发送邮件的方法,以网络的形式smtpClient.Timeout=15000;smtpClient.Credentials = new NetworkCredential(strMeEmail,strPWD);  //设置链接SMTP时的身份验证,也就是我要连接的QQ邮箱的服务器,我需要我邮箱的密码,才可以用它发送邮件,而且必须开通了QQ的SMTP服务,使用生成的凭证码try{smtpClient.Send(mailMsg);return true;}catch(Exception ex){throw new Exception(ex.Message);}}}
}

调用
因为我的邮件内容是用html拼接的,所以是这样的,如果你不需要的话,就把 IsBodyHtml 设置为false,然后合同内容直接写就行。

 StringBuilder stringBuilder = new StringBuilder();stringBuilder.Append("<!DOCTYPE html>");stringBuilder.Append("<html>");stringBuilder.Append("<head>");stringBuilder.Append("<meta charset="+"{CHARSET}"+">");stringBuilder.Append("<title></title>");stringBuilder.Append("</head>");stringBuilder.Append("<body>");stringBuilder.Append("<div style="+"width: 500px; "+">");stringBuilder.Append($"<h3>尊敬的XX先生/</h3>")stringBuilder.Append("<br />");stringBuilder.Append("<div style=" + "float: right; " + ">");                       stringBuilder.Append("</div>");stringBuilder.Append("</div>");stringBuilder.Append("</body>");stringBuilder.Append("</html>");//DirectorEmail 是对方的邮件EmailSender email = new EmailSender("你好", DirectorEmail, stringBuilder.ToString());LogHelper.Info("DirectorEmail", "文件地址:" + ConlocalPath);//path 是附件地址email.AddAttchment(Path);email.SendEmail();

注意:
1、因为QQ邮箱的SMTP使用了SSL加密,所以EnableSsl必须设置为true ,否则发送不出去.
2、增加附件的地方,给上文件的地址,比如这样添加附件
email.AddAttchment(@“C:\Users\Administrator\Downloads\图片\1.svg”);
3、发布到服务器上的时候,以华为云服务器为例,华为云服务器默认是关闭了25端口的,如果要使用25端口的话,要在华为云提交工单申请打开25端口 。

有问题请联系我,我看到了都会回复。谢谢大家。

C#实现发送QQ邮件并添加附件相关推荐

  1. android发送QQ邮件(带附件)

    本文转载自https://my.oschina.net/chenhao901007/blog/373883,谢谢! package com.dailywork.util;import java.io. ...

  2. spring 发送qq邮件内容和附件(样式发送邮件)

    发送邮件所需要的jar包 <!--发邮件--><dependency><groupId>javax.mail</groupId><artifact ...

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

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

  4. 使用springboot发送QQ邮件,可以发送附件

    使用springboot发送QQ邮件 1.在application.properties中写入以下配置信息 #文件上传的配置信息 #总大小 spring.servlet.multipart.max-r ...

  5. QQ邮箱炸啦,我的附件名怎么乱码?解决javaMail发送QQ邮件,附件名乱码的问题

    解决javaMail发送QQ邮件,附件名乱码的问题 问题背景 具体问题 解决思路 源码Debug 解决方式 问题背景 项目里面使用javaMail发QQ邮件,日志显示我们这边传过去的附件名是正常的,个 ...

  6. Java发送QQ邮件的3种形式(commons-email)

    第一步:项目引入相应资源   commons-email-xx.jar,mail.jar,activation.jar maven项目pom引入 (注意对应配置的版本问题哦~)     可参考 --& ...

  7. Java 通过SMTP实现发送QQ邮件

    在eclipse中创建项目,并把javax.amil.jar和commons-email-1.5,jar复制到项目中 链接:https://pan.baidu.com/s/1sQjA1GEpKi6IJ ...

  8. Java中利用qqemai发送QQ邮件

    最近自己了解下Java中利用mai发送QQ邮件 1.QQ邮箱设置 1.1 进去QQ邮箱-->设置-->账号-->进行设置如下图 以下源码 package test; import j ...

  9. Python3 发送QQ邮箱(含附件)

    Python3 发送QQ邮箱(含附件) 准备工作: 1.用到的python包:smtplib和email 2.获取qq邮箱授权码:在qq邮箱的设置里面的账户下面,开启POP3/SMTP服务和IMAP/ ...

最新文章

  1. Autocomplete 自动补全(Webform实战篇)
  2. 数字下变频和数字上变频
  3. matlab导出jar包错误Error: An error occurred while shelling out to javac(erro code = 1)解决办法...
  4. 新趋势:数据驱动的销售
  5. Nginx 301与302配置
  6. Android多种View动画:EasyAndroidAnimations
  7. 小程序开发(7)-之获取手机号、用户信息
  8. Maven多模块打包遇到的问题详解
  9. 吊打面试官!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题
  10. 推荐一本学javascript的书籍---经典
  11. RichTextBox中插入图片
  12. 实验一 DOS命令解释程序的编写
  13. 如何卸载office201032位_office2010如何卸载干净,笔者教你win7系统彻底卸载office2010的攻略...
  14. 【Android安全】JEB技巧汇总
  15. c语言的实验报告实验原理,c语言实验报告
  16. C++笔记:奇葩排序之猴子排序、珠排序、面条排序
  17. 解决电脑桌面程序图标变白问题
  18. 《基于C/S模式的android手机与PC机通信系统的开发》项目
  19. IE 凉了?怎么可能!
  20. 利用SPSS可视化分箱轻松给数据进行等分分组

热门文章

  1. 利用PHP的字符串解析特性Bypass
  2. cad文件怎么转成jpg格式的图片?这个办法很好用
  3. 基于强化学习的期权量化交易回测系统4
  4. 洛克王国辅助服务器不显示,洛克王国东哥辅助使用问题以及解决方案
  5. 【从0到1】GD32F450+LAN8720+LWIP(裸机)移植过程记录
  6. SpringCloud使用Nacos服务发现实现远程调用
  7. [BZOJ3280]小R的烦恼(费用流)
  8. java 音频视频转码
  9. 热门软件看点:暴风影音和它的对手们 1
  10. 中国90座城市建筑物屋顶矢量数据集