首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

.net1.1发送邮件有关问题

2012-10-10 
.net1.1发送邮件问题谁有.NET1发邮件的代码只要输入邮件帐号密码 就可以给指定的邮箱发送邮件[解决办法]us

.net1.1发送邮件问题
谁有.NET1发邮件的代码
只要输入邮件帐号密码 就可以给指定的邮箱发送邮件

[解决办法]
using System;
using System.Web.Mail;

namespace SendMailTest
{
/// <summary>
/// EnhanceMailMessage 的摘要说明。
/// </summary>
public class EnhancedMailMessage : MailMessage
{
private string displayName;
private string smtpServerName;
private string smtpUserName;
private string smtpUserPassword;
private int smtpServerPort;
private bool smtpSSL;

public EnhancedMailMessage()
{
displayName = string.Empty;
smtpServerName = string.Empty;
smtpUserName = string.Empty;
smtpUserPassword = string.Empty;
smtpServerPort =465;
smtpSSL = true;
}

/// <summary>
/// The display name that will appear
/// in the recipient mail client
/// </summary>
public string DisplayName
{
set
{
displayName = value;
}
get
{
return displayName;
}
}
/// <summary>
/// SMTP server (name or IP address)
/// </summary>
public string SMTPServerName
{
set
{
smtpServerName = value;
}
get
{
return smtpServerName;
}
}

/// <summary>
/// Username needed for a SMTP server
/// that requires authentication
/// </summary>
public string SMTPUserName
{
set
{
smtpUserName = value;
}
get
{
return smtpUserName;
}
}

/// <summary>
/// Password needed for a SMTP server
/// that requires authentication
/// </summary>
public string SMTPUserPassword
{
set
{
smtpUserPassword = value;
}
get
{
return smtpUserPassword;
}
}

/// <summary>
/// SMTP server port (default 587)
/// </summary>
public int SMTPServerPort
{
set
{
smtpServerPort = value;
}
get
{
return smtpServerPort;
}
}

/// <summary>
/// If SMTP server requires SSL
/// </summary>
public bool SMTPSSL
{
set
{
smtpSSL = value;
}
get
{
return smtpSSL;
}
}

public void Send()
{
if (smtpServerName.Length == 0)
{
throw new Exception("SMTP Server not specified");
}
if (displayName.Length > 0)
{
this.Headers.Add("From",
string.Format("{0} <{1}>",
displayName, From));
}
// set SMTP server name
this.Fields["http://schemas.microsoft.com/" +
"cdo/configuration/smtpserver"] = smtpServerName;
// set SMTP server port
this.Fields["http://schemas.microsoft.com/cdo" +
"/configuration/smtpserverport"] = smtpServerPort;
this.Fields["http://schemas.microsoft.com/" +
"cdo/configuration/sendusing"] = 2;

if (smtpUserName.Length > 0 && smtpUserPassword.Length > 0)
{
this.Fields["http://schemas.microsoft.com/" +
"cdo/configuration/smtpauthenticate"] = 1;

// set SMTP username
this.Fields["http://schemas.microsoft.com" +
"/cdo/configuration/sendusername"] = smtpUserName;
// set SMTP user password
this.Fields["http://schemas.microsoft.com/" +
"cdo/configuration/sendpassword"] = smtpUserPassword;
}

// ssl if needed


if (smtpSSL)
{
this.Fields.Add("http://schemas.microsoft" +
".com/cdo/configuration/smtpusessl", "true");
}
this.BodyEncoding = System.Text.Encoding.UTF8;
this.BodyFormat = System.Web.Mail.MailFormat.Html;
SmtpMail.SmtpServer = smtpServerName;
//SmtpMail.SmtpServer.Insert( 0, smtpServerName); 
SmtpMail.Send(this);
}
}
}

[解决办法]

C# code
    /// <summary>    /// 发送电子邮件类    /// </summary>    public class Mail    {        /// <summary>        /// 发送电子邮件函数        /// </summary>        /// <param name="txtHost">电子邮件服务主机名称</param>        /// <param name="txtFrom">发送人地志</param>        /// <param name="txtPass">发信人密码</param>        /// <param name="txtTo">收信人地址</param>        /// <param name="txtSubject">邮件标题</param>        /// <param name="txtBody">邮件内容</param>        /// <param name="isBodyHtml">是否采用HTML编码</param>        /// <param name="priority">电子邮件的优先级别</param>        /// <param name="encoding">内容采用的编码方式</param>        /// <param name="files">附件</param>        /// <returns>操作结果</returns>        public static string SendMail(string txtHost, string txtFrom, string txtPass, string txtTo, string txtSubject, string txtBody, bool isBodyHtml, MailPriority priority, System.Text.Encoding encoding, string[] files)        {            //电子邮件附件            Attachment data = null;            //传送的电子邮件类            MailMessage message = new MailMessage(txtFrom, txtTo);            //设置标题            message.Subject = txtSubject;            //设置内容            message.Body = txtBody;            //是否采用HTML编码            message.IsBodyHtml = isBodyHtml;            //电子邮件的优先级别            message.Priority = priority;            //内容采用的编码方式            message.BodyEncoding = encoding;            try            {                //添加附件                //if (files.Length > 0 && files != null)                //{                //    for (int i = 0; i < files.Length; i++)                //    {                //        //实例话电子邮件附件,并设置类型                //        data = new Attachment(files[i], System.Net.Mime.MediaTypeNames.Application.Octet);                //        //实例邮件内容                //        System.Net.Mime.ContentDisposition disposition = data.ContentDisposition;                //        //取得建档日期                //        disposition.CreationDate = System.IO.File.GetCreationTime(files[i]);                //        //取得附件修改日期                //        disposition.ModificationDate = System.IO.File.GetLastWriteTime(files[i]);                //        //取得读取日期                //        disposition.ReadDate = System.IO.File.GetLastAccessTime(files[i]);                //        //设定文件名称                //        System.IO.FileInfo fi = new System.IO.FileInfo(files[i]);                //        disposition.FileName = fi.Name.ToString();                //        //添加附件                //        message.Attachments.Add(data);                //    }                //}                //实例从送电子邮件类                SmtpClient client = new SmtpClient();                //设置电子邮件主机名称                client.Host = txtHost;                //取得寄信人认证                client.Credentials = new NetworkCredential(txtFrom, txtPass);                //发送电子邮件                client.Send(message);                return "邮件发送成功";            }            catch (Exception Err)            {                //返回错误信息                return Err.Message;            }            finally            {                //销毁电子邮件附件                if (data != null)                {                    data.Dispose();                }                //销毁传送的电子邮件实例                message.Dispose();            }        }    } 


[解决办法]
2.0的我测试通过的,不知在1.0中能否用,供参考:
//用qq邮箱,进入qq邮箱设置--开通--POP3/IMAP/SMTP服务即可,其它邮箱很多都没有SMTP服务,不能用它来发邮件
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net.Mail;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

public void SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, string strto, string strSubject, string strBody)
{
System.Net.Mail.SmtpClient client = new SmtpClient(strSmtpServer);
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
System.Net.Mail.MailMessage message = new MailMessage(strFrom, strto, strSubject, strBody);
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = true;
client.Send(message);
}
//第一个参数是邮箱服务器
//第二个参数发件人的帐号
//第三个参数发件人密码
//第四个参数收件人帐号
//第五个参数主题
//第六个参数内容.


protected void Button1_Click(object sender, EventArgs e)
{//发送邮件
try
{
SendSMTPEMail("stmp.qq.com", "1013466933", "123xxxxxx", "linpc868@163.com", "123", "用asp.net发送邮件,测试成功");

}
catch (Exception er)
{
Label1.Text = er.Message;
}
}
}

[解决办法]
前面有两处错误,1、邮箱服务器 2、发件人邮箱,应为如下:
protected void Button1_Click(object sender, EventArgs e)
{
try
{
SendSMTPEMail("smtp.qq.com", "1013466933@qq.com", "***********", "linpc868@163.com", "123", "用asp.net发送邮件,测试成功2010-01-09");

}
catch (Exception er)
{
Label1.Text = er.Message;
}
}
[解决办法]
昨天在写用户注册的时候,需要写用户填写用户邮件地址,但又得验证邮件地址的有效性,解决这种问题的方法就是根据用户注册的邮箱,有邮箱中发送一个注册码,然后根据注册码来完成下一步的注册。在网上搜索了一下方法,只有.net1.1的方法,在此基础上修改了一下。现在提供两种版本的示例

1).Net1.1

System.Web.Mail命名空间:
这个命名控件下包含了以下的对象和三个属性:
包含的对象:
MailAttachment:与邮件附件有关的对象类
MailMessage :邮件主体
SmtpMail :负责发送邮件的SMTP协议。
属性列表:
MailEncoding :邮件的编码(Base64,UUEncode)
MailFormat :邮件的格式(Html超文本格式,Text纯文本格式)
MailPriority :邮件优先级(High, Medium, Low)

构建MailMessage对象:
MailMessage对象是邮件的承载主体,通常可以先构建好MailMessage对象,然后设置它的属性的方式来构建邮件程序,下面列出了的是一些常用的属性:
Attachments :邮件附件
Bcc :暗送地址
Body :邮件主体
BodyFormat :邮件格式(html,text)
Cc :抄送地址
From :发信人地址
Priority :邮件优先级(High, Medium,Low)
Subject :邮件主题
To :接收人地址
UrlContentBase :在HTML格式邮件中的URL编码方式
UrlContentLocation:邮件信息的优先级(High, Medium,Low)

使用SMTPMail发送邮件
构建好MailMessage对象之后,还需要使用另外一个对象-SMTPMail-来发送邮件,SMTPMAIL有一个很重要的方法:Send,该方法有两个不同用法,其中一个可以仅仅发送整个的MailMessage对象:
SmtpMail.Send(myEmailObject);
另外一个允许你分别指定发送者,收邮件地址,邮件主题,邮件主题,然后再发送出去:
SmtpMail.Send(strFrom, strTo, strSubject, strBody);

 

示例:


void SendMail()

{

System.Web.Mail.MailMessage myEmail = new System.Web.Mail.MailMessage(); 

// SET MESSAGE PARAMETERS 
myEmail.From = "hohisoft@163.com";
myEmail.To = "hohisoft@163.com";
myEmail.Subject = "咨询培训事宜"; 
myEmail.BodyFormat = System.Web.Mail.MailFormat.Html; 
myEmail.Body = "学习.net,请问你们的实训课程都何时开课?."; 

//SEND THE MESSAGE 
System.Web.Mail.SmtpMail.Send(myEmail); 

}

 
http://www.devdao.com
2).Net2.0

 System.Net.Mail命名空间:
这个命名控件下包含了以下主要对象和主要属性:
包含的对象:
MailAddress:表示电子邮件发件人或收件人的地址
Attachment :表示电子邮件的附件
MailAddressCollection :存储与电子邮件关联的电子邮件地址
MailMessage :表示可以使用 SmtpClient 类发送的电子邮件
SmtpClient :允许应用程序使用简单邮件传输协议 (SMTP) 来发送电子邮件。
属性列表:
DeliveryNotificationOptions:描述电子邮件的传送通知选项 
MailPriority :指定 MailMessage 的优先级
SmtpAccess :指定允许的简单邮件传输协议 (SMTP) 服务器访问级别
SmtpDeliveryMethod:指定如何发送电子邮件
SmtpStatusCode:指定使用 SmtpClient 类发送电子邮件的结果

构建MailMessage对象:
MailMessage对象是邮件的承载主体,通常可以先构建好MailMessage对象,然后设置它的属性的方式来构建邮件程序,下面列出了的是一些常用的属性:
Attachments :邮件附件
Bcc :暗送地址
Body :邮件主体
Cc :抄送地址
From :发信人地址
Subject :邮件主题
To :接收人地址

使用SmtpClient发送邮件
构建好MailMessage对象之后,还需要使用另外一个对象-SmtpClient-来发送邮件,SmtpClient有一个很重要的方法:Send,可以发送整个的MailMessage对象:
SmtpClient.Send(MailMessage);

在这个例子中,使用System.Net.Mail命名空间

/// <summary>
/// 自动发送邮件
/// </summary>
/// <param name="strMail">邮件接受地址</param>
/// <param name="strRegistCode">注册码</param>
/// <returns></returns>
bool SendMail(string strMail, string strRegistCode)
{
string strHost = "mail.cdce.cn"; //STMP服务器地址
string strAccount = "jackguo"; //SMTP服务帐号
string strPwd = "111111"; //SMTP服务密码


SmtpClient _smtpClient = new SmtpClient();
_smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
_smtpClient.Host = strHost; ;//指定SMTP服务器
_smtpClient.Credentials = new System.Net.NetworkCredential(strAccount, strPwd);//用户名和密码

string content = "你的验证码是:" + strRegistCode + ",请获取后立即完成注册,关联基本信息。";
content += "<br><br>该邮件为自动发送,请不要回复!";

MailAddress sender = new MailAddress("jackguo@cdce.cn", "统考信息");
MailAddress receriver = new MailAddress(strMail);

MailMessage mail = new MailMessage(sender, receriver);
MailAddressCollection ToMail = new MailAddressCollection();

mail.Subject = "统考信息系统验证码";//主题

mail.Body = content;//内容
mail.BodyEncoding = System.Text.Encoding.Default;//正文编码
mail.IsBodyHtml = true ;
mail.Priority = MailPriority.High;//优先级

try
{
_smtpClient.Send(mail);
return true;
}
catch (Exception e)
{
return false;
}

}

热点排行