您的位置:首页 > 编程语言 > C#

如何使用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地址只能有一个

 

 

 

 

 

 

 

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐