决定写写博客了,毕竟有太久时间没更新这东西,最近太忙,忙着怎么玩的开心,玩的潇洒,直到最近几天才恢复正常,写了几天的程序,又有心得了,写上来。
想在自己的主页上做一个在线发送邮件的东东,具体有MS自带的System.Web.Mail和一个使用比较广泛的Jmail。听说MS自带的不太好用,我就试着捣鼓了一下Jmail,后来也没搞定,算了,有点麻烦,另外找吧。一阵忙乎,发现了OpenSMTP.NET这个开源的组件,http://sourceforge.net/projects/opensmtp-net/,用C#开发的,相关的还有OpenPOP.NET。就用它吧,按照下面的代码,我成功了。之间有个小麻烦,我最先用的smtpHost是smtp.163.com,但是这样的话,发送者在页面上填的自己的email必须是163.com的,不然就会发送失败,又试了21cn的,也是这样,最后找到sohu的,就可以了。
private void btnSend_Click(object sender, EventArgs e) {
try {
// SMTP服务器
string smtpHost = "smtp.sohu.com";
// SMTP服务器端口
int smtpPort = 25;
// 发送者邮件地址
string senderEmail = txtEmail.Text;
// 发送者名字
string senderName = txtName.Text;
// 接收者邮件地址
string recipientEmail = "chengbo1983@gmail.com";
// 主题
string subject = txtSubject.Text;
// 邮件内容
string body = txtMessage.Text;
SmtpConfig.VerifyAddresses = false;
EmailAddress from = new EmailAddress(senderEmail, senderName);
EmailAddress to = new EmailAddress(recipientEmail);
MailMessage msg = new MailMessage(from, to);
// 这行一定要填上,不然收到的中文邮件是一连串的???????
msg.Charset = "gb2312";
msg.Subject = subject;
msg.Body = body;
Smtp smtp = new Smtp(smtpHost, smtpPort);
// 在SMTP服务器上的用户名和密码
smtp.Username = "chengbo1983";
smtp.Password = "******";
smtp.SendMail(msg);
StringBuilder toList = new StringBuilder();
for (IEnumerator i = msg.To.GetEnumerator(); i.MoveNext();) {
EmailAddress a = (EmailAddress)i.Current;
toList.Append(a.Address + ";");
}
}
catch(MalformedAddressException mfa) {
//异常处理
}
catch(SmtpException se) {
//异常处理
}
catch(Exception ex) {
//异常处理
}
}
希望这篇文章能对大家有点帮助,演示http://chengbo.net/Contact.aspx
try {
// SMTP服务器
string smtpHost = "smtp.sohu.com";
// SMTP服务器端口
int smtpPort = 25;
// 发送者邮件地址
string senderEmail = txtEmail.Text;
// 发送者名字
string senderName = txtName.Text;
// 接收者邮件地址
string recipientEmail = "chengbo1983@gmail.com";
// 主题
string subject = txtSubject.Text;
// 邮件内容
string body = txtMessage.Text;
SmtpConfig.VerifyAddresses = false;
EmailAddress from = new EmailAddress(senderEmail, senderName);
EmailAddress to = new EmailAddress(recipientEmail);
MailMessage msg = new MailMessage(from, to);
// 这行一定要填上,不然收到的中文邮件是一连串的???????
msg.Charset = "gb2312";
msg.Subject = subject;
msg.Body = body;
Smtp smtp = new Smtp(smtpHost, smtpPort);
// 在SMTP服务器上的用户名和密码
smtp.Username = "chengbo1983";
smtp.Password = "******";
smtp.SendMail(msg);
StringBuilder toList = new StringBuilder();
for (IEnumerator i = msg.To.GetEnumerator(); i.MoveNext();) {
EmailAddress a = (EmailAddress)i.Current;
toList.Append(a.Address + ";");
}
}
catch(MalformedAddressException mfa) {
//异常处理
}
catch(SmtpException se) {
//异常处理
}
catch(Exception ex) {
//异常处理
}
}