1。首先引用命名空间using System.Net.Mail;
代码:
定义一个简单的发送邮件的方法
/// <summary>
///
/// </summary>
/// <param name="Form">发送人的邮件地址</param>
/// <param name="tomail">收件人的邮箱地址(可以多个用,隔开)</param>
/// <param name="UserName">发送人的邮件用户名</param>
/// <param name="PassWord">发送人的邮件密码</param>
/// <param name="strTitle">邮件的主题</param>
/// <param name="strContern">邮件内容</param>
public void SendMail(string From,string tomail, string UserName,string PassWord, string strTitle, string strContern)
{
try
{
MailMessage message = new MailMessage();//
message.From = new MailAddress(From);//发送人的地址
message.To.Add(tomail);//收件人地址
message.Subject = strTitle;//邮件的主题
message.Body = strContern;//邮件的内容
//发送邮箱服务器(如果是发送人的邮箱是qq邮箱就用下面这个如果是163邮箱就用smtp.163.com)
SmtpClient smtp = new SmtpClient("smtp.qq.com");
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;//邮件发送的方式
//UserName用户民如(959639581.qq.com邮箱UserName="959639581")
smtp.Credentials = new System.Net.NetworkCredential(UserName,PassWord);
smtp.Send(message);
}
catch (Exception e)
{
string kk = e.Message;
throw new Exception("网络问题");
}
}
注意:有些邮箱需要开通服务才能发送成功如当用163邮箱给qq邮箱发送邮件时发送不过去
可能你的qq邮箱的POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务没有开启
需要手动开启
点击设置-> 账户下面的
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务点击第一个服务开启
2. 我们可以吧上善面的代码进一步完
先定义两个方法
public static int toInt(object v)
{
int r = 0;
try
{
r = Convert.ToInt32(v);
}
catch
{
r = 0;
}
return r;
}
public static int toInt(string v)
{
return toInt((object)v);
}
public static string toString(object v)
{
string r = "";
try
{
r = Convert.ToString(v);
if (r == null)
{
throw new Exception("转换之后值异常!", null);
}
}
catch
{
r = "";
}
return r;
}
public static string toString(int v)
{
return toString((object)v);
}
发送邮件的方法
/// <summary>
/// 使用SMTP发送邮件
/// </summary>
/// <param name="smtpHost">smtp服务器信息,格式:Host:Port,Port可省略,采用默认端口25如"smtp.163.com:25"</param>
/// <param name="UserName">smtp服务器登录用户名</param>
/// <param name="UserPass">smtp服务器登录密码</param>
/// <param name="MailName">发件人昵称</param>
/// <param name="MailFrom">发件人</param>
/// <param name="MailTo">收件人,多个可使用,分隔</param>
/// <param name="strTitle">邮件主题</param>
/// <param name="strBody">邮件内容</param>
/// <param name="isHTML">是否为HTML邮件(有些邮箱不支持html)</param>
/// <returns>发送状态</returns>
public static bool sendMail(string smtpHost, string UserName, string UserPass, string MailName,string MailFrom,
string MailTo, string strTitle,
string strBody, bool isHTML)
{
System.Net.Mail.MailMessage objMsg = new System.Net.Mail.MailMessage();
objMsg.From = new System.Net.Mail.MailAddress(MailFrom, MailName);
objMsg.To.Add(MailTo);
objMsg.Subject = strTitle;
objMsg.IsBodyHtml = isHTML;
objMsg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容得编码格式
objMsg.Body = strBody;
string[] smtpHostArr = smtpHost.Split(':');
string smtpHostIPAdd = String.Copy(smtpHost);
int smtpHostPort = 25;
if (smtpHostArr.Length >= 2)
{
smtpHostIPAdd = toString(smtpHostArr[0].ToString());
smtpHostPort = toInt(smtpHostArr[1].ToString());
}
System.Net.Mail.SmtpClient objSMTP = new System.Net.Mail.SmtpClient();
objSMTP.DeliveryMethod = SmtpDeliveryMethod.Network;
objSMTP.Host = smtpHostIPAdd;
objSMTP.Port = smtpHostPort;
objSMTP.Credentials = new System.Net.NetworkCredential(UserName, UserPass);
try
{
objSMTP.Send(objMsg);
return true;
}
catch(Exception e)
{
string dd = e.Message;
return false;
}
return false;
}
3.也可以给邮件加附件
在上面的方法中加一个附件信息的参数Attachment[]attachement
{
foreach (Attachment item in attachment)
{
objMsg.Attachments.Add(item);
}
}
如 :
Attachment[] a = new Attachment[] {
new Attachment("E:\\f.txt")
};