如何使用c# 实现邮件发送功能 ,以及如何向邮件内容添加图片

1.添加引用: 

using System.Net.Mail;
using System.Net;//验证发件人发件人邮箱需要用到NetworkCredential

2.创建发送邮件的方法(如果有多个收件人或者抄送人,先将收件人用特殊符号拼接,再用split切割成数组然后循环添加就好了)

具体看如下代码:

 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没有邮件签名的方法

所以,可以在邮件内容中附加邮件签名

然后就涉及到一个问题,邮件内容附加图片怎么解决,不用担心,下面就是向邮件内容中添加图片的解决办法啦

 //先将要处理的图片作为附件添加
    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://blog.csdn.net/u014449653/article/details/78816567

smtp 和pop3的区别

smtp可以理解成寄信的,而且大多数smtp服务器是免费的

而pop服务器则是用来收信的,而且每个Email地址只能有一个

有兴趣的小伙伴可以关注我的公众号哦~ 里面有很多自己平时积攒起来的学习资源,Python,web安全,前端,Java等,都是免费领取的

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值