如何从谷歌,雅虎或其他邮件域发送ASP.Net邮件?

时间:2011-03-03 23:33:20

标签: asp.net email mailmessage

我有一个“与我们联系”页面,用户将在其中提供电子邮件ID和查询,并在提交表单时,网络管理员将收到该电子邮件。

如果我将他们的电子邮件ID配置为“来自”MailAddress并发送邮件,如果该ID来自热门邮件域(如gmail或hotmail),则会无法执行此操作,但会与其他不受欢迎或不存在的域一起使用,例如我@ abcxyzmail.om没有提供任何凭据!

在我正确配置SMTP和网络凭据后,它与gmail一起使用。 目的是让接收电子邮件的我的网站管理员能够点击他的邮件客户端中的回复按钮,并看到填写了“联系我们”页面中填写的“来自”字段的“到”字段。 有没有正确的方法来做到这一点或提示或技巧来实现它。

继承我的代码

    MailMessage emailMessage = new MailMessage();
    MailAddress emailTo = new MailAddress("admin@webdev.co.nz", "Web Dev");
    MailAddress emailFrom = new MailAddress(tbEmail.Text);
    SmtpClient localhost = new SmtpClient("localhost");

    emailMessage.To.Add(emailTo);
    emailMessage.From = emailFrom;
    emailMessage.Subject = "Enquiry / Feedback";
    emailMessage.Body = "Name: " + tbName.Text +
            "\nAddress: " + tbEmail.Text +
            "\nComments: " + tbComments.Text;//emails body

    localhost.Send(emailMessage);

由于

西特

4 个答案:

答案 0 :(得分:0)

这是因为您使用本地主机发送电子邮件 - 您需要一个电子邮件服务器。如果您确实拥有GMail(或其他)帐户,那么请使用其服务器并使用正确的凭据。

答案 1 :(得分:0)

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Net.Mail;


public class YourClass
{
    private void SendMailFromGmail(string vFrom, string vTo, string vGmailID, string vGmailPass, string vMailText, string vSMPTDNS, string vSubject)
    {
        MailMessage MyMailMessage = new MailMessage();
        SmtpClient SMTPServer = new SmtpClient(vSMPTDNS);
        var _with1 = SMTPServer;
        //Start by creating a mail message object

        //From requires an instance of the MailAddress type

        MyMailMessage.From = new MailAddress(vFrom);

        //To is a collection of MailAddress types
        MyMailMessage.To.Add(vTo);    
        MyMailMessage.Subject = vSubject;
        MyMailMessage.Body = vMailText;
        //Create the SMTPClient object and specify the SMTP GMail server
        _with1.Port = 587;

        _with1.Credentials = new System.Net.NetworkCredential(vGmailID, vGmailPass);
        _with1.EnableSsl = true;

        try {
            _with1.Send(MyMailMessage);
            string lNewVariable5 = "Email Sent";
        //MessageBox.Show(lNewVariable5)
        } catch (SmtpException ex) {
            throw ex;
        }
    }

    public void Main()
    {
        string vFrom = "from_address_here@gmail.com";
        string vTo = "to_address_here@domain_name_here";
        string vGmailID = "account uid";
        string vGmailPass = " account pwd";
        string vMailText = "This is the test text for Gmail email";
        string vSMPTDNS = "smtp.gmail.com";
        string vSubject = "GMail Test";

        SendMailFromGmail(vFrom, vTo, vGmailID, vGmailPass, vMailText, vSMPTDNS, vSubject);
    }



}

答案 2 :(得分:0)

不确定为什么你在这里遇到问题 - 我们有一些系统可以做到这一点而没有任何问题。但是邮件是一个狡猾而又狡猾的野兽;我打赌服务器上的配置设置搞砸了 - 你有多少控制权?

在任何情况下,更合适的方法是使用EmailMessage.ReplyTo(2.0 / 3.5)或EmailMessage.ReplyToList(4.0)属性发送消息。这可能会绕过导致此问题的服务器上的任何配置。

答案 3 :(得分:0)

添加对标题的回复

mail.Headers.Add( "Reply-To", "users.email.@hisprovider.com" );

这将使电子邮件客户端填充此地址而不是地址。这是你想要的。上面的代码未经测试。