如果邮箱需要ssl加密访问 请问如何用c#发邮件? 如果邮箱需要ssl加密访问 请问如何用c#发邮件?已经有现成的发邮件程序如果邮件帐户需要使用ssl加密(比如GMAIL) 应该如何修改呢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System.Net.Mail;MailMessage mail = new MailMessage(); mail.IsBodyHtml = true; mail.SubjectEncoding = Encoding.GetEncoding("GB2312"); mail.BodyEncoding = Encoding.GetEncoding("GB2312"); mail.Priority = MailPriority.High; mail.From = new MailAddress("user"); mail.To.Add("[email protected]"); mail.Subject = "hello"; mail.Body = "hello"; SmtpClient smtp = new SmtpClient(server, port); smtp.EnableSsl = true; smtp.Credentials = new NetworkCredential("user", "pass");smtp.Send(mail); sdk2.0 用jmail组件 regsvr32 jmail.dllpublic static string SendMail(string ReceiveMail,string MailSubject,string MailContent) { jmail.Message Jmail = new jmail.Message(); Jmail.Silent = true; Jmail.Logging = true; Jmail.Charset = "GB2312"; Jmail.ContentType = "text/html"; Jmail.AddRecipient(ReceiveMail,"",""); Jmail.From = "***"; Jmail.MailServerUserName = "***"; Jmail.MailServerPassWord = "***"; Jmail.Subject = MailSubject; Jmail.Body = MailContent; Jmail.Send("IP地址",false); Jmail.Close(); return Jmail.ErrorCode.ToString(); } 忘了说了,是在dos提示符下输入regsvr32 jmail.dll .net 2.0中使用SslStream来进行socket操作。以下是连接及登陆的代码片断。其他的部分请自行实现。private static bool OnCertificateValidation(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) { return true; } return false; } private SslStream GetConnection() { SslStream sslStream = null; try { if(null == this.Host || this.Host.Trim().Length == 0) { ErrorEventArgs e = new ErrorEventArgs("邮件服务器地址未设置!"); OnSmtpError(e); } else { OnBeginConnect(EventArgs.Empty); tcpClient = new TcpClient(this.Host, this.Port); RemoteCertificateValidationCallback callback = new RemoteCertificateValidationCallback(OnCertificateValidation); tcpClient.SendTimeout = this.SendTimeout; tcpClient.ReceiveTimeout = this.RecieveTimeout; tcpClient.ReceiveBufferSize = 1024; tcpClient.SendBufferSize = 1024; LingerOption linger = new LingerOption(true, 10); tcpClient.LingerState = linger; sslStream = new SslStream(tcpClient.GetStream(), false, callback); ReadFromStream(ref sslStream, ref returnMsg); if (CheckError(returnMsg, ReplyConstants.SmtpReplyConstants.HELO_REPLY)) { throw new Exception(); } sslStream.AuthenticateAsClient(this.Host); if (sslStream.IsAuthenticated) { OnConnect(EventArgs.Empty); return sslStream; } } } catch { ErrorEventArgs e = new ErrorEventArgs("无法连接到邮件服务器!"); OnSmtpError(e); } return sslStream; } private bool AuthLogin(ref SslStream sslStream) { if(null != this.Username && this.Username.Length > 0 && null != this.Password && this.Password.Length > 0) { WriteToStream(ref sslStream, "AUTH LOGIN\r\n"); ReadFromStream(ref sslStream, ref returnMsg); if(AuthImplemented(returnMsg)) { OnBeginAuthenticate(EventArgs.Empty); string encodedUsername = Convert.ToBase64String(Encoding.ASCII.GetBytes(this.Username.ToCharArray())); WriteToStream(ref sslStream, encodedUsername + "\r\n"); ReadFromStream(ref sslStream, ref returnMsg); if(!CheckError(returnMsg, ReplyConstants.SmtpReplyConstants.SERVER_CHALLENGE)) { return false; } string encodedPassword = Convert.ToBase64String(Encoding.ASCII.GetBytes(this.Password.ToCharArray())); WriteToStream(ref sslStream, encodedPassword + "\r\n"); ReadFromStream(ref sslStream, ref returnMsg); if(!CheckError(returnMsg, ReplyConstants.SmtpReplyConstants.AUTH_SUCCESSFUL)) { return false; } OnAuthenticated(EventArgs.Empty); } } return true; } 【帮顶有分】问个socket通信中能取出报文特定字节值的问题! c# 鼠标移动一条画好的线,鼠标到了哪里线就跟着到了哪里? Log4Net所产生的日志问题 C#打开EXE文件如何让它常驻内存? 请教List排序问题 C#如何去做一个写 日记的 W indows 窗体 如何在使用windowsmediaplayer这个控件的时候不把播放窗口显示出来? 求一个正则 【提问】请问,如何制作透明背景的图标? 请教一个Client端接收Service端信息的问题 dropdownlist联动的问题!大家帮个忙 ASP.NET操作EXCEL后,无法结束进程(不是普通的行列操作)
mail.IsBodyHtml = true;
mail.SubjectEncoding = Encoding.GetEncoding("GB2312");
mail.BodyEncoding = Encoding.GetEncoding("GB2312");
mail.Priority = MailPriority.High;
mail.From = new MailAddress("user");
mail.To.Add("[email protected]");
mail.Subject = "hello";
mail.Body = "hello";
SmtpClient smtp = new SmtpClient(server, port);
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential("user", "pass");
smtp.Send(mail); sdk2.0
{
jmail.Message Jmail = new jmail.Message();
Jmail.Silent = true;
Jmail.Logging = true;
Jmail.Charset = "GB2312";
Jmail.ContentType = "text/html";
Jmail.AddRecipient(ReceiveMail,"","");
Jmail.From = "***";
Jmail.MailServerUserName = "***";
Jmail.MailServerPassWord = "***";
Jmail.Subject = MailSubject;
Jmail.Body = MailContent;
Jmail.Send("IP地址",false);
Jmail.Close();
return Jmail.ErrorCode.ToString();
}
其他的部分请自行实现。
private static bool OnCertificateValidation(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
{
return true;
}
return false;
} private SslStream GetConnection()
{
SslStream sslStream = null;
try
{
if(null == this.Host || this.Host.Trim().Length == 0)
{
ErrorEventArgs e = new ErrorEventArgs("邮件服务器地址未设置!");
OnSmtpError(e);
}
else
{
OnBeginConnect(EventArgs.Empty);
tcpClient = new TcpClient(this.Host, this.Port);
RemoteCertificateValidationCallback callback = new RemoteCertificateValidationCallback(OnCertificateValidation); tcpClient.SendTimeout = this.SendTimeout;
tcpClient.ReceiveTimeout = this.RecieveTimeout;
tcpClient.ReceiveBufferSize = 1024;
tcpClient.SendBufferSize = 1024; LingerOption linger = new LingerOption(true, 10);
tcpClient.LingerState = linger;
sslStream = new SslStream(tcpClient.GetStream(), false, callback);
ReadFromStream(ref sslStream, ref returnMsg);
if (CheckError(returnMsg, ReplyConstants.SmtpReplyConstants.HELO_REPLY))
{
throw new Exception();
}
sslStream.AuthenticateAsClient(this.Host);
if (sslStream.IsAuthenticated)
{
OnConnect(EventArgs.Empty);
return sslStream;
}
}
}
catch
{
ErrorEventArgs e = new ErrorEventArgs("无法连接到邮件服务器!");
OnSmtpError(e);
}
return sslStream;
} private bool AuthLogin(ref SslStream sslStream)
{
if(null != this.Username && this.Username.Length > 0 && null != this.Password && this.Password.Length > 0)
{
WriteToStream(ref sslStream, "AUTH LOGIN\r\n");
ReadFromStream(ref sslStream, ref returnMsg);
if(AuthImplemented(returnMsg))
{
OnBeginAuthenticate(EventArgs.Empty);
string encodedUsername = Convert.ToBase64String(Encoding.ASCII.GetBytes(this.Username.ToCharArray()));
WriteToStream(ref sslStream, encodedUsername + "\r\n"); ReadFromStream(ref sslStream, ref returnMsg);
if(!CheckError(returnMsg, ReplyConstants.SmtpReplyConstants.SERVER_CHALLENGE))
{
return false;
} string encodedPassword = Convert.ToBase64String(Encoding.ASCII.GetBytes(this.Password.ToCharArray()));
WriteToStream(ref sslStream, encodedPassword + "\r\n");
ReadFromStream(ref sslStream, ref returnMsg);
if(!CheckError(returnMsg, ReplyConstants.SmtpReplyConstants.AUTH_SUCCESSFUL))
{
return false;
}
OnAuthenticated(EventArgs.Empty);
}
}
return true;
}