日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Asp.net 邮件传输(转)

發(fā)布時間:2025/7/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Asp.net 邮件传输(转) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
因為項目需要,我本來做的是通過密碼問題找回用戶忘記的密碼,結(jié)果客戶要郵件自動發(fā)送的那種找回密碼,還要用自己的郵件服務(wù)器。那么我怎么辦?還要留個郵件服務(wù)器接口,好難做啊,讓我真不知所措,我上網(wǎng)上查了一下午,也測試了一下午,郵件自動發(fā)送怎么做,我用了差不多4種方法了,試了又試,我是在Webconfig里配置,或是用比較流行的Jmail 。不知這算不算接口了,哎,郵件服務(wù)器配置我不會配,也沒配過反正我就這樣做了,呵呵,如果有做過郵件服務(wù)器配置的朋友看到我這個文章,希望能給我點提示,指點下我至于怎么換成自己的郵件服務(wù)器,又怎么配置,就請高手指點下我吧。

下面說下我總結(jié)辦法:
第一種方法:

using System.Web.Mail;

public void sendMail()
{
MailMessage mail1 = new MailMessage();
mail1.Body="body here";
mail1.From="xxx@xxx.com";
mail1.To="yyy@yyy.com";
mail1.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate",1);
mail1.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername","xxx@xxx.com");
mail1.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword","********");
SmtpMail.SmtpServer="mail.xxx.com";
SmtpMail.Send(mail1);
}

以上添加的幾個 Fields 是用來作SMTP發(fā)信認證的,如果你的發(fā)信服務(wù)器不需要認證,就可以省略這幾句。


第二種方法:

using System.Net.Mail;

方法一:向單個地址發(fā)送郵件,不設(shè)置web.config文件
public void SendMail()
{
string mailto = "to@company.com";
string mailfrom = "from@company.com";
System.Net.NetworkCredential credential = new System.Net.NetworkCredential("from_username", "from_password");
SmtpClient smtp = new SmtpClient("smtp.company.com");
smtp.Credentials = credential;

MailMessage message = new MailMessage(mailfrom, mailto);
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = "subject here";
message.Body = "body here";
smtp.Send(message);
message.Dispose();
}

方法二、向單個地址發(fā)送郵件,設(shè)置web.config文件
public void SendMail()
{
string mailto = "to@company.com";
string mailfrom = "from@company.com";

MailMessage message = new MailMessage(mailfrom, mailto);
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = "subject here";
message.Body = "body here";
smtp.Send(message);
message.Dispose();
}

在web.config中添加如下:
<system.net>
<mailSettings>
<smtp from="from@company.com">
<network host="smtp.company.com" port="25" userName="from_username" password="from_password"/>
</smtp>
</mailSettings>
</system.net>

方法三:群發(fā)郵件,設(shè)置web.config文件
public void SendEmail()
{
string mailto = "to1@company.com,to2@company.com";
string title = "mail title here";
string content = "mail content here";

SmtpClient smtp = new SmtpClient();
MailMessage message = new MailMessage();
MailAddressCollection address = new MailAddressCollection();
string[] mailtos = mailto.Split(',');
for (int i = 0; i < mailtos.Length; i++)
{
address.Add(mailtos[i]);
}
foreach (MailAddress add in address)
{
message.To.Add(add);
}
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = title;
message.Body = content;
smtp.Send(message);
message.Dispose();
address.Clear();
}

在web.config中添加如下:
<system.net>
<mailSettings>
<smtp from="from@company.com">
<network host="smtp.company.com" port="25" userName="from_username" password="from_password"/>
</smtp>
</mailSettings>
</system.net>

采用以上方法,如果運行發(fā)信程序的計算機上裝有郵件監(jiān)控等殺毒軟件,會有失敗的警告,但實際已發(fā)送成功。解決辦法是關(guān)閉殺毒軟件的監(jiān)控功能。

下面這個記得加上命名空間:

using System.Net;
using System.Net.Cache;
using System.Net.Mail;
using System.Net.Configuration;
using System.Web.Configuration;

適用的框架:asp.net framework 2.0/.net framework3.0/.net framework3.5

在web.config里設(shè)置.net framework的網(wǎng)絡(luò)連接

?

XML/HTML代碼
  • <system.net> ??
  • </system.net>??
  • 如下:設(shè)置stmp郵件發(fā)送的配置

    ?

    XML/HTML代碼
  • //父元素:configuration(提供所有名稱空間的配置) ??
  • <system.net>??
  • ???? //這里還可以加入如下元素的設(shè)置 ??
  • ???? //authenticationModules:設(shè)置用來驗證WEB請求的模塊 ??
  • ???? //connectionManagement:設(shè)置WEB服務(wù)器最大連接數(shù) ??
  • ???? //defaultProxy:設(shè)置http的代理服務(wù)器 ??
  • ???? //mailSettings:配置smtp ??
  • ???? //requestCaching:控制網(wǎng)絡(luò)請求緩存機制 ??
  • ???? //settings:為System.NET配置基本網(wǎng)絡(luò)選項 ??
  • ???? //<webRequestModules>元素(網(wǎng)絡(luò)設(shè)置):指定模塊從WEB服務(wù)器請求信息。 ??
  • ????<mailSettings>??
  • ?????? //deliveryMethod設(shè)置郵件發(fā)送方式,這里是網(wǎng)絡(luò)形式 ??
  • ??????<smtp deliveryMethod="Network" from="xxx@yyy.com" >??
  • ???????? //host郵件發(fā)送服務(wù)器 ??
  • ????????? //userName發(fā)送郵件時,用來進行身份驗證的用戶名 ??
  • ????????? //password如下驗證時的密碼 ??
  • ????????<network host="smtp.yyy.com" userName="xxx@yyy.com" password="zzzzzzz" />??
  • ??????</smtp>?????? ??
  • ????</mailSettings>??
  • </system.net>??
  • ?

    以編程的方式獲取web.config里的smtp配置

    NetSectionGroup類

    命名空間
    System.Net.Configuration:為應(yīng)用程序提供了以編程方式訪問和更新配置文件System.Net命名空間下的設(shè)置的類。
    程序集
    System

    定義:
    public sealed class NetSectionGroup : ConfigurationSectionGroup

    說明:
    這個類提供了以程序方式訪問存儲在配置文件里的信息。
    這個類和網(wǎng)絡(luò)設(shè)置文檔里的system.net元素(網(wǎng)絡(luò)設(shè)置)相對應(yīng)。
    這部分的為下列名稱空間提供配置設(shè)置:
    System.Net
    System.Net.Cache
    System.Net.Mail

    在程序里讀取configuration/system.net/mailSettings/stmp配置

    ?

    C#代碼
  • //NetSectionGroup在上面已經(jīng)介紹過了 ??
  • //GetSectionGroup從指定的配置文件獲取system.net的配置 ??
  • //WebConfigurationManager.OpenWebConfiguration ??
  • //打開應(yīng)用程序根目錄下的web.config生成System.Configuration.Configuration對象實例 ??
  • SmtpSection cfg = NetSectionGroup.GetSectionGroup(WebConfigurationManager.OpenWebConfiguration("~/web.config")).MailSettings.Smtp;??
  • ?

    發(fā)送電子郵件

    C#代碼
  • try{ ??
  • ???//實例化一個郵件消息對象 ??
  • ??? MailMessage email = new MailMessage(cfg.From, mailto); ??
  • ??? email.IsBodyHtml = true; ??
  • ??? email.Body = "要發(fā)送的郵件內(nèi)容,上面已經(jīng)設(shè)置可以支持html內(nèi)容,例外還可以通過指定email.BodyEncoding屬性設(shè)置郵件內(nèi)容的編碼"; ??
  • ??? email.Subject = "郵件主題,通過指定email.SubjectEncoding屬性設(shè)置郵件主題的編碼"; ??
  • ???//實例化smtp客服端對象,用來發(fā)送電子郵件 ??
  • ??? System.Net.Mail.SmtpClient stmp = new SmtpClient(cfg.Network.Host); ??
  • ???//設(shè)置是否需要發(fā)送是否需要身份驗證,如果不需要下面的credentials是不需要的 ??
  • ??? stmp.UseDefaultCredentials = true;??? ??
  • ??? stmp.Credentials = new System.Net.NetworkCredential(cfg.Network.UserName, cfg.Network.Password); ??
  • ???//發(fā)送郵件 ??
  • ??? stmp.Send(email); ??
  • } ??
  • catch (Exception ex) ??
  • { ??
  • [轉(zhuǎn)]:http://www.cnblogs.com/matrix/archive/2004/05/20/10495.aspx

    ?

    現(xiàn)在的郵件發(fā)送大多數(shù)需要STMP的身份驗證,
    .NET里面的
    System.Web.Util
    System.Web.Mail
    就不可以了.
    我寫這篇文章是希望對大家開發(fā)項目有所幫助,高手見笑了


    先要去找一個組件,名字叫 JMail
    大家可以去網(wǎng)上找一下,下載下來安裝上.
    將jmail.dll引用到工程中

    ?

    private void Button1_Click(object sender, System.EventArgs e)
    {
    ???
    ?? jmail.Message Jmail=new jmail.Message();

    ?? DateTime t=DateTime.Now;??
    ?? String Subject=" From EMail .net";??
    ?? String body="你好科學12:15";
    ?? String FromEmail="ljt21@163.com";??
    ?? String ToEmail="xiao-maolover@163.com";
    ?? //Silent屬性:如果設(shè)置為true,JMail不會拋出例外錯誤. JMail. Send( () 會根據(jù)操作結(jié)果返回true或false
    ?? Jmail.Silent=true;
    ?? //Jmail創(chuàng)建的日志,前提loging屬性設(shè)置為true
    ?? Jmail.Logging=true;
    ?? //字符集,缺省為"US-ASCII"
    ?? Jmail.Charset="GB2312";
    ?? //信件的contentype. 缺省是"text/plain") : 字符串如果你以HTML格式發(fā)送郵件, 改為"text/html"即可。
    ?? Jmail.ContentType="text/html";
    ?? //添加收件人
    ?? Jmail.AddRecipient(ToEmail,"","");
    ?? Jmail.From=FromEmail;
    ?? //發(fā)件人郵件用戶名
    ?? Jmail.MailServerUserName="ljt21" ;
    ?? //發(fā)件人郵件密碼
    ?? Jmail.MailServerPassWord="****" ;
    ?? //設(shè)置郵件標題
    ?? Jmail.Subject=Subject;
    ?? //郵件添加附件,(多附件的話,可以再加一條Jmail.AddAttachment( "c:\\test.jpg",true,null);)就可以搞定了。[注]:加了附件,講把上面的Jmail.ContentType="text/html";刪掉。否則會在郵件里出現(xiàn)亂碼。
    ??? Jmail.AddAttachment( "c:\\test.jpg",true,null);
    ?? //郵件內(nèi)容
    ?? Jmail.Body=body+t.ToString();
    ?? //Jmail發(fā)送的方法
    ?? Jmail.Send("smtp.163.com",false);
    ?? Jmail.Close() ;
    }
    這樣就OK了..!
    經(jīng)過測試的,沒有問題.


    Asp.net 自動發(fā)送郵件的方法
    今天有一個模塊需要自動發(fā)送郵件的功能,就隨便寫了一個,記錄一下作為積累。


    一、首先需要配置web.config文件:


    <system.net>
    <mailSettings>
    ??? <smtp from="Emailname">
    ??????? <network host="smtp.163.com" userName="Emailname" password="Emailpassword"
    ??????? port="25" defaultCredentials="false"/>
    ??? </smtp>
    </mailSettings>
    </system.net>


    二、然后編寫發(fā)送郵件的函數(shù):


    <summary>
    /// 郵件發(fā)送方法(帶附件)
    /// </summary>
    /// <param name="mailto">收件人地址。如:receiver@163.com</param>
    /// <param name="mailsubject">郵件標題</param>
    /// <param name="mailbody">郵件正文</param>
    /// <param name="mailFrom">郵件發(fā)送人地址。如:sender@163.com</param>
    /// <param name="list">附件路徑</param>
    /// <returns></returns>
    public bool MySendMail(string mailto, string mailsubject, string mailbody, string mailFrom, ArrayList list)
    {
    try
    {
    ??? //郵件發(fā)送人地址
    ??? System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress(mailFrom);
    ??? //如test@163.com,初步測試,用test@sina.com不行,用163的郵件服務(wù)器,就必須用163郵箱的用戶名
    ??? //收件人地址
    ??? System.Net.Mail.MailAddress to = new System.Net.Mail.MailAddress(mailto);//如test@tom.com
    ??? System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(from, to);
    ??? mail.Subject = mailsubject;
    ??? mail.Body = mailbody;
    ??? //以下設(shè)置服務(wù)器
    ??? System.Net.Mail.SmtpClient mySmth = new System.Net.Mail.SmtpClient();
    ??? //以下為增加附件
    ??? int count = list.Count;
    ??? for (int i = 0; i < count; i++)
    ??? {
    ????? System.Net.Mail.Attachment data = new System.Net.Mail.Attachment(list[i].ToString());
    ????? mail.Attachments.Add(data);
    ??? }
    ??? mySmth.Send(mail);
    ??? mail.Dispose();
    ??? return true;
    }
    catch
    {
    ??? return false;
    }
    }


    三、最后就是對函數(shù)的調(diào)用了:


    //自動發(fā)送郵件
    string mailSubject = "會員注冊確認函";
    string mailBody = "正文內(nèi)容。";
    string mailFrom = ConfigurationManager.AppSettings["SendMail"];
    ArrayList List = new ArrayList();
    List.Add(Server.MapPath(ConfigurationManager.AppSettings["SendMailText"]));
    if (MySendMail(this.txtEmail.Text, mailSubject, mailBody, mailFrom, List))
    {
    ...
    //發(fā)送成功,進行相應(yīng)處理
    }
    else
    {
    ...
    //發(fā)送失敗,進行相應(yīng)處理
    return;
    }

    轉(zhuǎn)載于:https://www.cnblogs.com/xiachufeng/archive/2010/05/18/1738210.html

    總結(jié)

    以上是生活随笔為你收集整理的Asp.net 邮件传输(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。