0

「お問い合わせ」ページがあり、ユーザーはメールIDとクエリを入力し、フォームを送信すると、ウェブ管理者がそのメールを受信します。

メールIDを「from」MailAddressに設定してメールを送信すると、IDがgmailやhotmailなどの人気のあるメールドメインからのものであるが、me@abcxyzmail.omなどの他の人気のないドメインや存在しないドメインでは機能する場合は失敗します。資格情報が提供されていません!

SMTPとネットワークのクレデンシャルを適切に構成した後、Gmailで動作しました。目的は、電子メールを受信した私のWebサイトの管理者が、メールクライアントの返信ボタンを押して、[お問い合わせ]ページに入力された[差出人]フィールドが入力された[宛先]フィールドを表示できるようにすることです。これを行うための適切な方法、またはそれを達成するためのヒントやコツはありますか?

これが私のコードです

    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

4 に答える 4

0

これは、ローカルホストを使用して電子メールを送信しているためです。電子メールサーバーが必要です。実際にGMail(またはその他の)アカウントを持っている場合は、正しい資格情報を使用してサーバーを使用してください。

于 2011-03-03T23:36:46.177 に答える
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);
    }



}
于 2011-03-03T23:55:34.620 に答える
0

ここで問題が発生する理由がわかりません。問題なくこれを実行するシステムがいくつかあります。しかし、メールは気まぐれでひねくれた獣です。私は物事を台無しにするサーバーの構成設定に賭けるでしょう-あなたはそこにどのくらいの制御を持っていますか?

いずれの場合も、これを行うためのより適切な方法は、EmailMessage.ReplyTo(2.0 / 3.5)またはEmailMessage.ReplyToList(4.0)プロパティを使用してメッセージを送信することです。これにより、この問題の原因となっているサーバー上の構成がバイパスされる可能性があります。

于 2011-03-03T23:58:09.360 に答える
0

ヘッダーに返信を追加する

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

これにより、電子メールクライアントはfromアドレスではなくこのアドレスを入力するようになります。これはあなたが探しているものですか。上記のコードはテストされていません。

于 2011-03-03T23:59:46.550 に答える