有时候我们需要使用代码发送邮件的需要,其实这很容易做到。不过在写代码之前,我们需要到我们的邮箱服务商的后台设置一下启动POP3服务。我们以163邮箱为例
在开启POP3服务时,邮箱服务商会提供一个“授权密码”,请一定要保管好这个密码,我们想通过代码发邮件就靠这个密码了,而不是我们日常登陆邮箱的密码。
Vb.Net |
Dim client As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient() client.Host = "smtp.163.com" client.UseDefaultCredentials = False '授权密码是指开通POP3服务时服务商提供的授权密码,不是登陆邮箱的密码 client.Credentials = New System.Net.NetworkCredential("wangjian6931@163.com", "授权密码") client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network Dim message As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage() '发送邮箱 message.From = New System.Net.Mail.MailAddress("wangjian6931@163.com") '收件箱,可以添加多个 message.[To].Add("443100019@qq.com") '邮件标题 message.Subject = "测试" '邮件正文 message.Body = "用自己写的软件发的邮件!" '邮件编码 message.BodyEncoding = System.Text.Encoding.UTF8 '邮件正文是否HTML message.IsBodyHtml = True '添加附件 Dim data As New System.Net.Mail.Attachment("e:\a.jpg", System.Net.Mime.MediaTypeNames.Application.Octet) message.Attachments.Add(data) Try '发送邮件 client.Send(message) MessageBox.Show("Email successfully send.") Catch ex As Exception MessageBox.Show("Send Email Failed." & ex.ToString()) End Try |
C# |
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); client.Host = "smtp.163.com"; client.UseDefaultCredentials = false; //授权密码是指开通POP3服务时服务商提供的授权密码,不是登陆邮箱的密码 client.Credentials = new System.Net.NetworkCredential("wangjian6931@163.com", "授权密码"); client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; // System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); //发送邮箱 message.From=new System.Net.Mail.MailAddress("wangjian6931@163.com"); //收件箱,可以添加多个 message.To.Add("443100019@qq.com"); //邮件标题 message.Subject = "测试"; //邮件正文 message.Body = "用自己写的软件发的邮件!"; //邮件编码 message.BodyEncoding = System.Text.Encoding.UTF8; //邮件正文是否HTML message.IsBodyHtml = true; //添加附件 System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(@"e:\a.jpg", System.Net.Mime.MediaTypeNames.Application.Octet); message.Attachments.Add(data); try { //发送邮件 client.Send(message); MessageBox.Show("Email successfully send."); } catch (Exception ex) { MessageBox.Show("Send Email Failed." + ex.ToString()); } |
因为像阿里云之类的云服务器是禁用常规SMTP服务器的邮件端口25的,所以上面的代码如果放在云服务器上可能会无法发送。这时候我们需要修改一下自己的代码。
相关参考资料:C# 服务器发送邮件失败实例分析
(51sjk.com)
记录一下C#使用SmtpClient发送网易163、126邮件使用sll协议失败的坑 | 码农家园
(codenong.com)
注意:下面的代码还需要配合云服务器安全策略、防火墙、安全中开放相应的587端口
C# |
|