编写一个SMTP的邮件发送小程序,其它都做好,只有在最后的放送里返回一个异常SmtpStatusCode.MailboxNameNotAllowed,目标邮箱语言错误.我用的163的邮件服务器,stmp.163.com.发件人和收件人都是163的注册邮箱.下面是发送邮件的方法
string[] e_mail:保存收件人邮箱的数组.
private void SendMail(string smtpserver,string sende_mail,string[] e_mail,string subject,MailPriority property)
{
SmtpClient myclient = new SmtpClient(smtpserver);//设置邮件服务器
try
{
//create a new MailMessage
MailAddress from = new MailAddress(sende_mail);
MailAddress to = new MailAddress(e_mail[0]); MailMessage mymail = new MailMessage(from,to); mymail.BodyEncoding = Encoding.UTF8;
mymail.Body = subject;
mymail.Priority = MailPriority.Normal; AddAttachment(mymail);//add attachments //for (int i = 1; i < e_mail.Length;i++)//create copys
//mymail.CC.Add(new MailAddress(e_mail[i])); myclient.Credentials = CredentialCache.DefaultNetworkCredentials;//身份认证
myclient.Send(mymail);
}catch (ArgumentNullException setmailexc){
MessageBox.Show("参数不能为空\n" + setmailexc.ToString(), "错误");
return;
}catch (ArgumentOutOfRangeException toexc){
MessageBox.Show("没有收件人\n"+toexc.ToString(), "错误");
return;
}catch (SmtpException sendexc){
Setstatus("发送失败");
JudgeStatusCode(sendexc);//根据返回的smtpexception的smtpstatuscode显示错误信息
}catch (InvalidOperationException sendexc){
MessageBox.Show("正在发送\n"+sendexc.ToString(), "错误");
return;
}
}
是不是163的邮件服务器有什么特别的?为什么会出现目标邮箱语法错误的提示?
string[] e_mail:保存收件人邮箱的数组.
private void SendMail(string smtpserver,string sende_mail,string[] e_mail,string subject,MailPriority property)
{
SmtpClient myclient = new SmtpClient(smtpserver);//设置邮件服务器
try
{
//create a new MailMessage
MailAddress from = new MailAddress(sende_mail);
MailAddress to = new MailAddress(e_mail[0]); MailMessage mymail = new MailMessage(from,to); mymail.BodyEncoding = Encoding.UTF8;
mymail.Body = subject;
mymail.Priority = MailPriority.Normal; AddAttachment(mymail);//add attachments //for (int i = 1; i < e_mail.Length;i++)//create copys
//mymail.CC.Add(new MailAddress(e_mail[i])); myclient.Credentials = CredentialCache.DefaultNetworkCredentials;//身份认证
myclient.Send(mymail);
}catch (ArgumentNullException setmailexc){
MessageBox.Show("参数不能为空\n" + setmailexc.ToString(), "错误");
return;
}catch (ArgumentOutOfRangeException toexc){
MessageBox.Show("没有收件人\n"+toexc.ToString(), "错误");
return;
}catch (SmtpException sendexc){
Setstatus("发送失败");
JudgeStatusCode(sendexc);//根据返回的smtpexception的smtpstatuscode显示错误信息
}catch (InvalidOperationException sendexc){
MessageBox.Show("正在发送\n"+sendexc.ToString(), "错误");
return;
}
}
是不是163的邮件服务器有什么特别的?为什么会出现目标邮箱语法错误的提示?
sc = new SmtpClient("smtp.163.com", 25);
sc.Credentials = new NetworkCredential(用户名, 密码);//设置用户发送邮件的凭据
一个最简单的较完整的Smtp发送邮件代码
private void Send_Click(object sender, EventArgs e)
{
try
{
mm = new MailMessage("####@163.com", tbmailTo.Text.Trim(), tbmailSubject.Text, sendMessage.Text);
//mm.BodyEncoding = Encoding.GetEncoding("gb2312");
sc = new SmtpClient("smtp.163.com", 25);
sc.Credentials = new NetworkCredential("hwj383", "huangjie");//设置用户发送邮件的凭据
//sc.DeliveryMethod = SmtpDeliveryMethod.Network;//处理未发送邮件
//sc.EnableSsl = true;//使用SSL安全连接
Thread send = new Thread(new ThreadStart(send_Mail));
send.Start();
sendStatus.Text = "请稍后,正在发送邮件...";
this.Send.Enabled = false;
}
catch//(Exception exp)
{
//MessageBox.Show(exp.Message);
MessageBox.Show("请检查收件人地址是否正确!");
}
} private void send_Mail()
{
try
{
sc.Send(mm);
this.BeginInvoke(new update(updateUI),0);
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
this.BeginInvoke(new update(updateUI), 1);
}
}