發送郵件的幾種方法(C#發郵件 和 js前台實現都有)C#后台自動發郵件 js發郵件


1.后台自動發郵件

1)首先設置郵件參數,這里寫在configuration里面

  <appSettings>
    <add key="SMTP" value="smtp.office365.com" />
    <add key="Port" value="587" />
    <add key="username" value="xxx@microsoft.com" />
    <add key="password" value="#EDC4rfv" />
    <add key="SmtpDeliveryMethod" value="Network" />
    <add key="EnableSsl" value="true" />
    <add key="IsBodyHtml" value="false" />
  </appSettings>

示例使用的是微軟郵箱,其他郵件參數可以自行百度

2)在后台代碼中添加如下語句

 try
            {
                string date = DateTime.Now.ToString("R").Split(',')[1];
                date = date.Split(' ')[1] + '-' + date.Split(' ')[2] + '-' + date.Split(' ')[3];

                string mailto = "xxx@microsoft.com";

                MailMessage mail = new MailMessage();

                mail.From = new MailAddress(ConfigurationManager.AppSettings["username"]);//
                mail.To.Add(mailto);
                mail.Subject = "Subject   " + DateTime.Now.ToLongDateString().ToString(); ;
                mail.Body = "Test Email";
                mail.IsBodyHtml = bool.Parse(ConfigurationManager.AppSettings["IsBodyHtml"]);//mail body是否為html
                string username = ConfigurationManager.AppSettings["username"];//
                string password = ConfigurationManager.AppSettings["password"];//

                using (SmtpClient SmtpServer = new SmtpClient(ConfigurationManager.AppSettings["SMTP"]))//
                {
                    SmtpServer.Port = int.Parse(ConfigurationManager.AppSettings["Port"]);//
                    SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
                    SmtpServer.Credentials = new System.Net.NetworkCredential(username, password);
                    SmtpServer.EnableSsl = bool.Parse(ConfigurationManager.AppSettings["EnableSsl"]);//
                    SmtpServer.Send(mail);
                }

            }
            catch (Exception ex)
            {
                Console.Write("Send Fail");
                Console.Write(ex.Message);
            }

這里需要引用 System.Configuration;(第一步中在config里面設置的參數讀取)和System.Net.Mail;

程序運行后會直接發送郵件到mailto不需要本地安裝outlook

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2.調用本地outlook打開郵件並注入郵件內容(在發布到服務器上之后並不怎么好用,微軟好像並不支持將outlook在無人監控的服務器上automation的做法)

在NuGet 包中安裝 Microsoft.Office.Interop.Outlook      using Outlook = Microsoft.Office.Interop.Outlook;

 

Outlook.Application olApp = new Outlook.Application();
            Outlook.MailItem mailItem = (Outlook.MailItem)olApp.CreateItem(Outlook.OlItemType.olMailItem);
            //set email to , email Subject , email CC 
            mailItem.To = "xxx@microsoft.com";
            // mailItem.CC = "";
            mailItem.Subject = "C#_SendEmail_Test";
            mailItem.Attachments.Add(@"D:\C#_Learn\Test.txt");//附件
            //set the body
            mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatRichText;
            string content = @"<html></html>";

            mailItem.HTMLBody = content;//這里發送的是html,其余格式也可以
            //mailItem.Display(mailItem);//不直接發送將這行取消注釋
            //((Outlook._MailItem)mailItem).Send();//直接發送將這行取消注釋

不直接發送 outlook會彈出一個郵件以供編輯 手動發送 如下圖

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

3.使用js調用本地的outlook沒有深入研究,只知道可以打開並注入內容 不知道可不可以直接發送,以下是使用js打開outlook並注入內容的方法(參考http://www.cnblogs.com/LiveWithIt/p/5937049.html)

<a href="mailto:xxx@xxx.com?subject=Subject&cc=CC&body=Body">send mail</a>

在第一個參數(mailto)后面添加?,其他參數之間用&連接。

mailto支持以下幾種參數:

局部效果圖如下所示:

根據參考鏈接提供一個示例:

html:

<ul class="email">
    <li><input type="text" name="name" placeholder="Name"></li>
    <li><input type="text" name="email" placeholder="Email Address"></li>
    <li><input type="text" name="number" placeholder="Phone Number"></li>
    <li class="message"><textarea name="message" placeholder="Message"></textarea> </li>
    <button class="btn btn-define" onclick="sendEmail()">Submit</button>
    <a href="mailto" id="send"></a>
</ul>

js:

    function sendEmail(){
        var name=$("[name='name']").val(),
         email=$("[name='email']").val(),
         number=$("[name='number']").val(),
         message=$("[name='message']").val(),
         body="My Name is: "+name+"%0a%0d"
          +"My Email Address is: "+email+"%0a%0d"
          +"My Phone Number is: "+number+"%0a%0d"
          +"Message:"+"%0a%0d"+message;
        $("#send").attr("href","mailto:mamengyi1121@163.com?body="+body);
        document.getElementById("send").click();
    }

使用js來填充emailbody 是否可以兼容html格式在這里不討論,但是經過本人測試在我的電腦上不可以,%0a%0d是UTL編碼用來實現換行 取代<br />

效果圖如下:

 

(聽說nodejs可以實現)先去研究 后續再寫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM