SMTP邮件服务器发送邮件(C#)
今天从网上学习C#发送邮件可是用QQ邮箱时就是不行,后来换成Sina邮箱就可以了
然后发现QQ stmp的端口有465和587两个,
个人测试后发现只有587端口可行,现将实现的方法记录如下
首先定义发送的用户类
class EmailUser
{
//发件人地址
public string Address { get; set; }
//显示名称
public string DisplayName { get; set; }
//收件人地址
public string EmailTo { get; set; }
//邮件标题
public string Subject { get; set; }
//邮件内容
public string EmailBody { get; set; }
//发件人姓名(邮箱名)
public string UserName { get; set; }
//发件人密码(邮箱密码)
public string Password { get; set; }
}
两种发送的方式如下:
1.QQ:
class Send
{
private static int emailPort = 587;
private static string emailHost = "smtp.qq.com";
public string SendEmail(EmailUser emailObj)
{
MailMessage message = new MailMessage();
message.From = new MailAddress(emailObj.Address, emailObj.DisplayName, System.Text.Encoding.UTF8);//发件人地址(可以随便写),发件人姓名,编码
message.To.Add(emailObj.EmailTo);
message.Subject = emailObj.Subject;//邮件标题
message.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
message.Body = emailObj.EmailBody;//邮件内容
message.BodyEncoding = System.Text.Encoding.UTF8;//邮件
message.IsBodyHtml = true;
message.Priority = MailPriority.Normal;
SmtpClient client = new SmtpClient();
client.Port = emailPort;//使用的端口
client.Host = emailHost;
client.Credentials = new System.Net.NetworkCredential(emailObj.UserName, emailObj.Password);
client.EnableSsl = true;//经过ssl加密(本人测试时发现这里为true才可发送)
object userState = message;
try
{
client.Send(message);
return "Send Email Success!";
}
catch (System.Net.Mail.SmtpException ex)
{
return ex.Message;
}
}
}
2.Sina
class Send
{
private static int emailPort = 25;
private static string emailHost = "smtp.sina.com";
public string SendEmail(EmailUser emailObj)
{
MailMessage message = new MailMessage();
message.From = new MailAddress(emailObj.Address, emailObj.DisplayName, System.Text.Encoding.UTF8);//发件人地址(可以随便写),发件人姓名,编码
message.To.Add(emailObj.EmailTo);
message.Subject = emailObj.Subject;//邮件标题
message.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码
message.Body = emailObj.EmailBody;//邮件内容
message.BodyEncoding = System.Text.Encoding.UTF8;//邮件
message.IsBodyHtml = true;
message.Priority = MailPriority.Normal;
SmtpClient client = new SmtpClient();
client.Port = emailPort;//使用的端口
client.Host = emailHost;
client.Credentials = new System.Net.NetworkCredential(emailObj.UserName, emailObj.Password);
object userState = message;
try
{
client.Send(message);
return "Send Email Success!";
}
catch (System.Net.Mail.SmtpException ex)
{
return ex.Message;
}
}
}
这两种方式主要是邮件服务器地址和端口不同
资源下载地址:http://download.youkuaiyun.com/detail/chr23899/8128663