簡體   English   中英

聯系表; ASP.NET, C#

[英]Contact Form; ASP.NET, C#

這應該很簡單,但有些東西我沒有得到。 用戶填寫信息,btnClick 執行代碼。

我認為 msgToAdd 將是電子郵件的收件人。 (測試為我的 email。)

並且 msgFromAdd 將是消息來自誰,由瀏覽者輸入。 (測試為我妻子的 email。)

然后是我在電子郵件/密碼中輸入的憑據。 (實際上,任何“我的”都是 x 公司。所以我需要在公司 email 密碼中編碼?:-/)

無論如何,我成功地將 email 發送到我的地址,但它說它來自我的地址,我需要它來自用戶輸入的任何地址。

我到處搜索,但所有代碼都是相同的,對我來說毫無意義。 謝謝。

        SmtpClient smtpClient = new SmtpClient(); 

        MailMessage mailMsg = new MailMessage();

        MailAddress msgToAdd = new MailAddress("myemail@gmail.com");
        MailAddress msgFromAdd = new MailAddress(tbxEmailAdd.Text);

        mailMsg.To.Add(msgToAdd);   
        mailMsg.From = msgFromAdd;
        mailMsg.Subject = ddlEmail.SelectedValue;
        mailMsg.IsBodyHtml = true;
        mailMsg.Body = tbxEmail.Text;

        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.Credentials = new System.Net.NetworkCredential("myemail@gmail.com", "mypassword");
        smtp.EnableSsl = true;
        smtp.Port = 587;
        smtp.EnableSsl = true;
        smtp.Send(mailMsg);

因此,即使使用下面的矯枉過正,它仍然沒有顯示真正的發件人地址。

        MailAddress msgFromAdd = new MailAddress(tbxEmailAdd.Text);

        mailMsg.From = msgFromAdd;
        mailMsg.ReplyToList.Add(msgFromAdd);
        mailMsg.ReplyTo = msgFromAdd;
        mailMsg.Sender = msgFromAdd;

此外,以下內容確實顯示了名稱。 仍然沒有 email 地址!

MailAddress msgFromAdd = new MailAddress(tbxEmailAdd.Text, "NAME");

我真的失去了它。

聽起來像谷歌不讓你搞亂“來自”header? 您可能想嘗試使用“Sender”屬性,但並不總是在所有 email 客戶端中呈現良好。

MailMessage,Sender 和 From 屬性的區別

我會檢查你的 web.config (如果你有的話)。 可能有這樣的設置:

<system.net>
    <mailSettings>
      <smtp from="your address here">
        <network host="localhost" password="" userName=""/>
      </smtp>
    </mailSettings>
 </system.net>

這可能會覆蓋您的設置。

您將使用 smtp 憑證發送 email,因此“發件人”應該是您的 email。 MailMessage 中的“From”屬性只是一個可選選擇,以防您使用不需要憑據的開放 smtp。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM