邮件发送
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;
namespace Mail
{
public partial class frmSendMail : Form
{
public frmSendMail()
{
InitializeComponent();
}
private MailMessage mailmessage;
private SmtpClient smtpclient;
private string password; //发件人密码
/// <summary>
///
/// </summary>
/// <param name="to">收件人地址</param>
/// <param name="from">发件人地址</param>
/// <param name="body">邮件正文</param>
/// <param name="title">邮件主题</param>
/// <param name="password">发件人密码</param>
public void SendMail(string to, string from, string body, string title, string password)
{
mailmessage = new MailMessage();
mailmessage.To.Add(to);
mailmessage.From = new MailAddress(from);
mailmessage.Body = body;//邮件内容
mailmessage.Subject = title;//邮件标题
mailmessage.IsBodyHtml = true; //是否是HTML邮件
mailmessage.BodyEncoding = Encoding.UTF8; //邮件标题编码
mailmessage.Priority = MailPriority.Normal;//邮件优先级
this.password = password;
}
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSendMail_Click(object sender, EventArgs e)
{
Send();
}
/// <summary>
/// 异步发送邮件
/// </summary>
/// <param name="completeMethod"></param>
public void SendAsync(SendCompletedEventHandler completeMethod)
{
if (mailmessage != null)
{
smtpclient = new SmtpClient();
smtpclient.Credentials = new System.Net.NetworkCredential
(mailmessage.From.Address, password);//设置发件人身份的票据
smtpclient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpclient.Host = "smtp." + mailmessage.From.Host;
smtpclient.SendCompleted += new SendCompletedEventHandler
(completeMethod);//注册异步发送邮件完成时的事件
smtpclient.SendAsync(mailmessage, mailmessage.Body);
}
}
/**/
/// <summary>
/// 发送邮件
/// </summary>
public void Send()
{
SendMail("接收邮箱", "发送邮箱", "要发送内容", "主题", "要发送的邮箱的密码");
if (mailmessage != null)
{
smtpclient = new SmtpClient();
smtpclient.Credentials = new System.Net.NetworkCredential
(mailmessage.From.Address, password);//设置发件人身份的票据
//方法1
//smtpclient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
//smtpclient.Host = "smtp." + mailmessage.From.Host;
//try
//{
// smtpclient.Send(mailmessage);
//}
//catch (System.Net.Mail.SmtpException ex)
//{
// MessageBox.Show(ex.Message, "发送邮件出错");
//}
------------------方法1可以。方法2有问题!!
//方法2
smtpclient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpclient.Port = 587;//Gmail所使用的端口
smtpclient.Host = "smtp.gmail.com";
smtpclient.EnableSsl = true;//经过ssl加密
object userState = mailmessage;
try
{
smtpclient.SendAsync(mailmessage, userState);
//smtpclient.Send(mailmessage);//这种更简单
}
catch (System.Net.Mail.SmtpException ex)
{
MessageBox.Show(ex.Message, "发送邮件出错");
}
}
MessageBox.Show("Mail sended");
}
}
}
浙公网安备 33010602011771号