如何使用c# 实现邮件发送功能 ,以及如何向邮件内容添加图片
2019-05-26 00:27
776 查看
1.添加引用:
[code]using System.Net.Mail; using System.Net;//验证发件人发件人邮箱需要用到NetworkCredential
2.创建发送邮件的方法(如果有多个收件人或者抄送人,先将收件人用特殊符号拼接,再用split切割成数组然后循环添加就好了)
具体看如下代码:
[code] public string sendmail(string toMail, string subject) { string user = "xxx@51.com";//发件人,这边也可以自定义 string passw = "xxx";//密码 string Suffix = ""; //邮箱后缀 int port = 587; //端口号 string smtp = "smtp..net"; Suffix = user.Substring(user.IndexOf('@')); if (Suffix == "@qindatech.com") { smtp = "smtp.qiye.163.com"; } else if (Suffix == "@51techservice.com") { smtp = "smtp.mxhichina.com"; } else if (Suffix == "@qq.com") { smtp = "smtp.qq.com"; } else if (Suffix == "@sh-teru.com") { smtp = "smtp.exmail.qq.com"; } //实例化一个发送邮件类。 System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(); //发件人邮箱地址,方法重载不同,可以根据需求自行选择。 mailMessage.From = new MailAddress(user); //收件人邮箱地址。 //这边收件人是用;进行拼接 if (toMail.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).Length > 1) { //如果有多个 foreach (var address in toMail.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { mailMessage.To.Add(address); } } else { mailMessage.To.Add(new MailAddress(toMail)); } //抄送人 if (chaosong.Split(new[] { ";"},StringSplitOptions.RemoveEmptyEntries).Length>1) { foreach (var chaosong1 in chaosong.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { mailMessage.CC.Add(chaosong1); } } else if (chaosong=="") { } else { mailMessage.CC.Add(new MailAddress(chaosong)); } //邮件标题。 mailMessage.Subject = subject; //邮件内容 mailMessage.Body = ""; //邮件内容。 //实例化一个SmtpClient类。 SmtpClient client = new SmtpClient(); //服务器端口 client.Port = port; //勤达邮箱服务器 client.Host = smtp; //使用安全加密连接。 client.EnableSsl = true; //不和请求一块发送。 client.UseDefaultCredentials = false; //验证发件人身份(发件人的邮箱,邮箱里的生成授权码); client.Credentials = new NetworkCredential(user, passw); //发送附件 mailMessage.Attachments.Add(new Attachment(xlsx)); try { client.Send(mailMessage); mailMessage.Dispose(); //关闭邮件使用的所有进程 return "send success"; } catch (Exception e) { string a = e.Message; mailMessage.Dispose(); //关闭邮件使用的所有进程 return "send error"; } }
弊端就是MailMessage没有邮件签名的方法
所以,可以在邮件内容中附加邮件签名
然后就涉及到一个问题,邮件内容附加图片怎么解决,不用担心,下面就是向邮件内容中添加图片的解决办法啦
[code] //先将要处理的图片作为附件添加 System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment (@"C:\Users\Administrator\Desktop\fin_bg2.png"); message.Attachments.Add(attachment); //相当与邮件内容定义成html message.IsBodyHtml = true; //这边邮件的内容就可以用html标签(img)来插入图片 //attachment.contendid为附件固定的id //cid:邮件BASE64编码的某个位置.然后从这个位置上读图片的数据 message.Body += "<img src=\"cid:" + attachment.ContentId + "\"/>";
注意:
1:如果使用qq发送的话,会报错“mail from address must be same as authorization user”,
这里代码是没有错的,只是你的qq邮箱没有开启下面这两个服务:
此时进入到网页版QQ邮箱,邮箱首页旁边有个设置超链接,再点账户,翻到POP3/IMAP/SMTP/Exchange服务,把前两个勾打上保存一下就可以发邮件了!
这边会要求你发送一封短信,发送后,会给你一串类似密钥的东西,将你程序中的密码替换成它就行啦
2、这边使用换行可以用</br>换行,但内容换行后,行间距会变得很大,可以调整行高度达到自己想要的效果,css:line-height:xxpx;
各邮箱端口号以及smtp服务器:
https://www.geek-share.com/detail/2724341397.html
smtp 和pop3的区别
smtp可以理解成寄信的,而且大多数smtp服务器是免费的
而pop服务器则是用来收信的,而且每个Email地址只能有一个
相关文章推荐
- C# 发送邮件(内容中可以插入图片,邮件可以添加附件,163邮箱、QQ邮箱等都可以使用)
- C# 发送邮件(内容中可以插入图片,邮件可以添加附件,163邮箱、QQ邮箱等都可以使用)
- C# 发送邮件(内容中可以插入图片,邮件可以添加附件,163邮箱、QQ邮箱等都可以使用)
- 如何在App中实现朋友圈功能之四在朋友圈中添加发送图片功能——箭扣科技Arrownock
- 如何在App中实现朋友圈功能之四在朋友圈中添加发送图片功能——箭扣科技Arrownock
- 如何实现程序调用系统邮件,发送app中抓取的xml图片和内容到指定的邮箱
- 强大的java编程实现邮件发送功能,支持内容,上传多个图片和多个附件
- python爬虫实现带附件+html内容以及图片的邮件发送
- thinkphp框架使用PHPMailer实现发送邮件的功能,以及各种问题解析
- PHP_thinkphp框架使用PHPMailer实现发送邮件的功能,以及各种问题解析
- 如何使用cdosys.dll实现发送邮件
- 使用c#给outlook添加任务、发送邮件
- 如何在App中实现IM功能之五快速实现图片接收和发送——箭扣科技Arrownock
- 使用Nvelocity实现发送邮件功能(ASP.NET MVC2环境下)
- JPEG图片文件格式浅析,以及使用C#实现图片的解析
- C#实现邮件发送的功能
- javaMail邮件发送模版(实现图片、附件的添加)
- java项目中添加邮件发送功能(使用apache commons mail开源项目)
- C#实现邮件发送功能
- C# listview如何显示网格线以及如何实现item的选中功能