asp.net c#邮件收发?
大家好:
我没写过邮件收发系统,
现在要用ASP.NET C#写个邮件收发系统,要可以发邮件,可以收邮件,但不知道怎么下手?
在网上看到说 ASP.NET里有自带的System.net.Mail类可以实现,
有的说自带的类只能实现发,不能收,收要用JMAIL,
但这些我都没用过,
不知道该怎么写?
好像程序写好,还要配置SMTP服务?
如果我先在我本地实现收发做个测试,需要怎么配置?
请高手们给我个思路,实现步骤,有代码更好,最好能有注释,谢谢。
[解决办法]
using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Net.Mail;using System.Text;using System.Net;/// <summary>///SendMail 的摘要说明/// </summary>public class SendMail{ private string _mailStmp; public string MailStmp { get { return _mailStmp; } set { _mailStmp = value; } } private string _mailFrom; public string MailFrom { get { return _mailFrom; } set { _mailFrom = value; } } private string _mailPwd; public string MailPwd { get { return _mailPwd; } set { _mailPwd = value; } } private string _mailTo; public string MailTo { get { return _mailTo; } set { _mailTo = value; } } private string _mailTitle; public string MailTitle { get { return _mailTitle; } set { _mailTitle = value; } } private string _mailContent; public string MailContent { get { return _mailContent; } set { _mailContent = value; } } public static void Send(SendMail mailInfo) { /*发件人的信息*/ string smtp = mailInfo.MailStmp; //发信人所用邮箱的服务器 string mailForm = mailInfo.MailFrom; //发件人的邮箱 string mailPwd = mailInfo.MailPwd; //发件人的密码 string mailTo = mailInfo.MailTo; //收件人信息 string mailTitle = mailInfo.MailTitle; //邮件标题 string mailContent = mailInfo.MailContent; //邮件内容 SmtpClient client = new SmtpClient(smtp, 25); client.UseDefaultCredentials = false; client.Credentials = new NetworkCredential(mailForm, mailPwd); /*指定如何处理待发的邮件*/ client.DeliveryMethod = SmtpDeliveryMethod.Network; MailMessage message = new MailMessage(mailForm, mailTo, mailTitle, mailContent); message.BodyEncoding = Encoding.Default; message.IsBodyHtml = true; client.Send(message); //try //{ // MailInfo mi = new MailInfo(); // mi.MailStmp = "" // mi.MailFrom = "@.com"; // mi.MailPwd = ""; // mi.MailTo = "beyondmj0.student@sina.com"; // mi.MailTitle = "Test For Fucking"; // mi.MailContent = "<marquee>123</marquee>"; // SendMail(mi); //} //catch (Exception ex) //{ // Console.WriteLine(ex.Message); //} }}
[解决办法]
参考
http://www.cnblogs.com/smallfa/articles/929962.html
http://www.cnblogs.com/zengjun1980/articles/1074825.html
[解决办法]
http://www.cnblogs.com/yank/archive/2008/08/03/1258428.html
http://www.cnblogs.com/voswin/articles/1281522.html
[解决办法]
http://www.cnblogs.com/ustbwuyi/archive/2007/05/28/762581.html
[解决办法]
/**//// <summary>
/// 邮件初始化
/// 为了简单,自己发个自己
/// </summary>
/// <returns></returns>
public MailMessage InitMail(string Address)
{
MailMessage mail = new MailMessage();
//发件人
mail.From = new MailAddress(Address);
//收件人
mail.To.Add(new MailAddress(Address));
//主题
mail.Subject = "ASP.NET send mail testing!";
//内容
mail.Body = "Welcome to join us,let me instruduce myself!";
//邮件主题和正文编码格式
mail.SubjectEncoding = System.Text.Encoding.UTF8;
mail.BodyEncoding = System.Text.Encoding.UTF8;
//邮件正文是Html编码
mail.IsBodyHtml = true;
//优先级
mail.Priority = MailPriority.High;
//密件抄送收件人
mail.Bcc.Add(Address);
//抄送收件人
mail.CC.Add(Address);
//添加附件
mail.Attachments.Add(new Attachment("d:\\1.txt"));
mail.Attachments.Add(new Attachment("d:\\2.txt"));
mail.Attachments.Add(new Attachment("d:\\3.txt"));
return mail;
}
发送Gmail邮件。端口号为25、587成功。
[解决办法]
using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace OSLeagueForumXP.Components
{
/**//// <summary>
/// TcpClient派生类,用来进行SMTP服务器的连接工作
/// </summary>
public class SMTPClient : TcpClient
{
/**//// <summary>
/// 进行SMTP服务器的连接
/// </summary>
public SMTPClient()
{
}
/**//// <summary>
/// 是否以连接
/// </summary>
/// <returns>连接为True,不连接为False</returns>
public bool isConnected()
{
return Active;
}
/**//// <summary>
/// 向服务器发送命令
/// </summary>
/// <param name="Command">命令</param>
public void SendCommandToServer(string Command)
{
NetworkStream ns = this.GetStream() ;
byte[] WriteBuffer ;
WriteBuffer = new byte[1024] ;
WriteBuffer = Encoding.Default.GetBytes(Command);
ns.Write(WriteBuffer,0,WriteBuffer.Length);
return ;
}
/**//// <summary>
/// 取得服务器反馈信息
/// </summary>
/// <returns>字符串</returns>
public string GetServerResponse()
{
int StreamSize ;
string ReturnValue = "" ;
byte[] ReadBuffer ;
NetworkStream ns = this.GetStream() ;
ReadBuffer = new byte[1024] ;
StreamSize = ns.Read(ReadBuffer,0,ReadBuffer.Length);
if (StreamSize==0)
{
return ReturnValue ;
}
else
{
ReturnValue = Encoding.Default.GetString(ReadBuffer);
return ReturnValue;
}
}
/**//// <summary>
/// 判断返回的信息中是否有指定的SMTP代码出现
/// </summary>
/// <param name="Message">信息</param>
/// <param name="SMTPCode">SMTP代码</param>
/// <returns>存在返回False,不存在返回True</returns>
public bool DoesStringContainSMTPCode(string Message,string SMTPCode)
{
return(Message.IndexOf(SMTPCode,0,10)==-1)?false:true;
}
} //结束类
/**//// <summary>
/// 发送邮件类
/// </summary>
public class SMTPMail
{
/**//// <summary>
/// 错误反馈信息
/// </summary>
private string strErrMessage = null;
/**//// <summary>
/// SMTP服务器反馈的信息
/// </summary>
private string strResponse;
/**//// <summary>
/// 构造函数
/// </summary>
public SMTPMail()
{
strErrMessage = "";
strResponse = "";
}
/**//// <summary>
/// 取得错误反馈信息
/// </summary>
public string ErrorMessage
{
get
{
return strErrMessage ;
}
}
/**//// <summary>
/// 取得SMTP服务器反馈的信息
/// </summary>
public string ServerResponse
{
get
{
return strResponse;
}
}
/**//// <summary>
/// 邮件发送优先级
/// </summary>
public enum Prioritys
{
/**//// <summary>
/// 最高级别
/// </summary>
HIGH = 1,
/**//// <summary>
/// 默认级别
/// </summary>
NORMAL = 3,
/**//// <summary>
/// 最低级别
/// </summary>
LOW = 5
}
[解决办法]
/**//// <summary>
/// 进行BASE64编码
/// </summary>
/// <param name="Data">数据</param>
/// <returns>字符串</returns>
private string Encode(string Data)
{
byte[] bteData;
bteData = Encoding.Default.GetBytes(Data);
return Convert.ToBase64String(bteData);
}
/**//// <summary>
/// 进行BASE64解码
/// </summary>
/// <param name="Data">数据</param>
/// <returns>字符串</returns>
private string Decode(string Data)
{
byte[] bteData;
bteData = Convert.FromBase64String(Data);
return Encoding.Default.GetString(bteData);
}
/**//// <summary>
/// 发送邮件
/// </summary>
/// <param name="SmtpHost">SMTP服务器</param>
/// <param name="Port">SMTP服务器端口</param>
/// <param name="From">邮件发送者</param>
/// <param name="DisplayFromName">显示的发送者名称</param>
/// <param name="Authentication">是否进行认证</param>
/// <param name="UserName">认证用户名</param>
/// <param name="Password">认证密码</param>
/// <param name="To">邮件接收者</param>
/// <param name="DisplayToName">显示的接收者名称</param>
/// <param name="Priority">优先级</param>
/// <param name="Html">是否为HTML</param>
/// <param name="Base">URL</param>
/// <param name="Subject">邮件主题</param>
/// <param name="Message">邮件内容</param>
public void SendMail(string SmtpHost,int Port,string From,string DisplayFromName,bool Authentication,string UserName,string Password,string To,string DisplayToName,Prioritys Priority,bool Html,string Base,string Subject,string Message)
{
try
{
string strResponseNumber;
SMTPClient smtpcMail = new SMTPClient();
smtpcMail.Connect(SmtpHost,Port);
bool bolConnect = smtpcMail.isConnected();
//判断是否进行了连接
if (!bolConnect)
{
strErrMessage = "Smtp服务器连接失败";
return;
}
//读取反馈信息
strResponseNumber = smtpcMail.GetServerResponse();
if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber,"220"))
{
this.strResponse += strResponseNumber;
}
else
{
this.strErrMessage = "连接失败" + strResponseNumber;
return ;
}
int intBuffer = 0;
int intArray = 0;
if(Authentication)
{
intBuffer = 9;
}
else
{
intBuffer = 6;
}
string[] strSendBuffer = new string[intBuffer];
string[] strResponseCode = {"220","250","251","354","221","334","235"}; // success codes from SMTP server
string strData = "";
strData = string.Concat("HELO ",SmtpHost);
strData = string.Concat(strData,"\r\n");
strSendBuffer[intArray] = strData;
intArray = intArray+1;
if(Authentication)
{
strData = "";
strData = string.Concat("AUTH LOGIN","\r\n");
strData = string.Concat(strData,"\r\n");
strSendBuffer[intArray] = strData;
intArray = intArray+1;
strData = "";
strData = string.Concat(Encode(UserName),"\r\n");
strData = string.Concat(strData,"\r\n");
strSendBuffer[intArray] = strData;
intArray = intArray+1;
strData = "";
strData = string.Concat(Encode(Password),"\r\n");
strData = string.Concat(strData,"\r\n");
strSendBuffer[intArray] = strData;
intArray = intArray+1;
}
strData = "";
strData = string.Concat("MAIL FROM: ","<" + From + ">" + "AUTH=" + From);
strData = string.Concat(strData,"\r\n");
strSendBuffer[intArray] = strData;
intArray = intArray+1;
strData = "";
strData = string.Concat("RCPT TO: ","<" + To + ">");
strData = string.Concat(strData,"\r\n");
strSendBuffer[intArray] = strData;
intArray = intArray+1;
strData = "" ;
strData = string.Concat("DATA","\r\n");
strSendBuffer[intArray] = strData ;
intArray = intArray+1;
strData = "" ;
strData = string.Concat("From: ",DisplayFromName + "<" + From + ">");
strData = string.Concat(strData,"\r\n" );
strData = string.Concat(strData,"To: " );
strData = string.Concat(strData,DisplayToName + "<" + To + ">");
strData = string.Concat(strData,"\r\n" );
strData = string.Concat(strData,"Subject: " );
strData = string.Concat(strData,Subject);
strData = string.Concat(strData,"\r\n");
strData = string.Concat(strData,"MIME-Version: 1.0" );
strData = string.Concat(strData,"\r\n");
strData = string.Concat(strData,"X-Priority: " + Priority);
strData = string.Concat(strData,"\r\n");
strData = string.Concat(strData,"X-MSMail-Priority: " + Priority);
strData = string.Concat(strData,"\r\n");
if(Html)
{
strData = string.Concat(strData,"Content-Type: text/html;" );
}
else
{
strData = string.Concat(strData,"Content-Type: text/plain;" );
}
strData = string.Concat(strData,"\r\n");
strData = string.Concat(strData,"charset=\"iso-8859-1\"" );
strData = string.Concat(strData,"\r\n");
if(Html == true)
{
strData = string.Concat(strData,"Content-Transfer-Encoding: text/html;" );
}
else
{
strData = string.Concat(strData,"Content-Transfer-Encoding: text/plain;" );
}
[解决办法]
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
namespace Email
{
public class Email
{
// private variables
private string smtpServer;
private MailMessage email;
// properties
public string To
{
set
{
this.email.To.Add(value);
}
}
public string From
{
set
{
this.email.From = new MailAddress(value);
}
}
public string Subject
{
set
{
this.email.Subject = value;
}
}
public string Cc
{
set
{
this.email.CC.Add(value);
}
}
public string Bcc
{
set
{
this.email.Bcc.Add(value);
}
}
public string Body
{
set
{
this.email.Body = value;
}
}
public string SmtpServer
{
set
{
this.smtpServer = value;
}
}
public System.Text.Encoding BodyEncoding
{
set
{
this.BodyEncoding = value;
}
}
// public methods
/// <summary>
///Default Constructor
/// </summary>
public Email()
{
this.email = new MailMessage();
}
/// <summary>
///Constructor with default values
/// </summary>
public Email(string to, string from, string cc, string bcc, string subject, string body, string smtpServer)
{
this.email = new MailMessage();
this.email.To.Add(to);
this.email.From = new MailAddress(from);
this.email.CC.Add(cc);
this.email.Bcc.Add(bcc);
this.email.Subject = subject;
this.email.Body = body;
this.smtpServer = smtpServer;
}
/// <summary>
///Sends email
/// </summary>
public void Send()
{
// sets smtp server
SmtpClient sc = new SmtpClient();
sc.Host = this.smtpServer;
// sends email
sc.Send(this.email);
}
/// <summary>
/// Send email using Smtp authentication
/// </summary>
public void Send(string username, string password)
{
SmtpClient sc = new SmtpClient();
// do not use default, use specified
sc.UseDefaultCredentials = false;
sc.Credentials = new System.Net.NetworkCredential(username, password);
sc.Host = this.smtpServer;
// sends email
sc.Send(this.email);
}
/// <summary>
///Adds attachment to email
/// </summary>
public void AddAttachment(string fileName)
{
Attachment attach = new Attachment(fileName);
this.email.Attachments.Add(attach);
}
/// <summary>
/// Sets email format to HTML
/// </summary>
public void HtmlBodyFormat()
{
email.IsBodyHtml = true;
}
/// <summary>
/// Sets encoding to UTF8
/// </summary>
public void UTF8Encoding()
{
email.BodyEncoding = System.Text.Encoding.UTF8;
}
}
}
[解决办法]
http://blog.csdn.net/Eray/archive/2007/11/29/1907531.aspx
http://blog.csdn.net/Eray/archive/2007/11/30/1908614.aspx
[解决办法]
using System.Web.Util;using System.Web.Mail; public bool sendjmail() { jmail.Message jmail = new jmail.Message(); DateTime t = DateTime.Now; string Subject = "from jmail.net"; string body = "你好jmail"; string FromEmail = "username@sina.com"; string ToEmail = "name@sohu.com"; jmail.Silent = true; jmail.Logging = true; jmail.Charset = "GB2312"; jmail.ContentType = "text/html"; jmail.AddRecipient(ToEmail, "", ""); jmail.From = FromEmail; jmail.MailServerUserName = "username"; jmail.MailServerPassWord = "******"; jmail.Subject = Subject; jmail.AddAttachment(@"E:\as.txt",true,null);//添加附件 bool reval; jmail.Body = body + t.ToString(); reval = jmail.Send("smtp.sina.com", false); jmail.Close(); return reval;//返回值为true,则发送成功,返回值为false,则发送失败 }
[解决办法]
asp.net类库中发送邮件的方法总结
http://www.qeqoo.com/dev/donet/aspnet/814.html
[解决办法]
using System.Net.Mail;
using System.Net.Mime;
using System.Net;
public static void CreateMessageWithAttachment(string server)
{
// Specify the file to be attached and sent.
// This example assumes that a file named Data.xls exists in the
// current working directory.
string file = @"D:\asdf.txt";
// Create a message and set up the recipients.
MailMessage message = new MailMessage(
"asdf@163.com",
"asdf@163.com",
"test",
"no du");
// Create the file attachment for this e-mail message.
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
// Add time stamp information for the file.
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
// Add the file attachment to this e-mail message.
message.Attachments.Add(data);
//Send the message.
SmtpClient client = new SmtpClient(server);
// Add credentials if the SMTP server requires them.
//client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.UseDefaultCredentials = true;
client.Credentials = new System.Net.NetworkCredential("username", "password");
client.Send(message);
// Display the values in the ContentDisposition for the attachment.
ContentDisposition cd = data.ContentDisposition;
Console.WriteLine("Content disposition");
Console.WriteLine(cd.ToString());
Console.WriteLine("File {0}", cd.FileName);
Console.WriteLine("Size {0}", cd.Size);
Console.WriteLine("Creation {0}", cd.CreationDate);
Console.WriteLine("Modification {0}", cd.ModificationDate);
Console.WriteLine("Read {0}", cd.ReadDate);
Console.WriteLine("Inline {0}", cd.Inline);
Console.WriteLine("Parameters: {0}", cd.Parameters.Count);
foreach (DictionaryEntry d in cd.Parameters)
{
Console.WriteLine("{0} = {1}", d.Key, d.Value);
}
data.Dispose();
}
protected void Timer1_Tick(object sender, EventArgs e)
{
if (DateTime.Now.Second % 20 == 0)
{
CreateMessageWithAttachment("smtp.163.com");
}
}
定时发送的代码
接收的没写过