0

この問題をかなり長い間調査してきましたが、まだ解決策を見つけていません。

ホストとして smtp.gmail.com を使用し、ポート 587 を使用して、通常の Gmail アカウントを使用して Web サイトからメールを送信できます。

私の現在の問題は、メールの送信に問題がないことです。エラーが表示されなくなりました。ただし、メールは送信されません。誰にもアイデアはありますか?

コードは次のとおりです。

構成:

<smtp from="admin@domain.com">
<network host="smtp.gmail.com" password="password" userName="admin@domain.com" port="587"/>
</smtp>

コード:

    public void Send() {

        bool bDev = ConfigurationManager.AppSettings["dev"] == "true";

        MailMessage oMsg = new MailMessage();

        foreach (string sAddress in To) {
                if (sAddress != "") oMsg.To.Add(sAddress);
        }

        oMsg.From = ((FromName == null) || (FromName == "")) ?
                    new MailAddress(From) :
                    new MailAddress(From, FromName);
        oMsg.Subject = Subject;

        oMsg.Body = Body.ToString();
        oMsg.IsBodyHtml = true;

        oMsg.BodyEncoding = Encoding.UTF8;
        SmtpClient smtp = new SmtpClient();
        smtp.EnableSsl = (new int[] { 587, 465 }).Contains(smtp.Port);
        smtp.Send(oMsg);
    }
4

2 に答える 2

1

2 番目の To アドレスを追加して、テストを再開しました。両方のアカウントにメールを受信し始めました。次に、2番目のアドレスを削除した後、機能し始めました。

返信先アドレスが差出人アドレスを使用しているという新しい問題に遭遇しました。そのため、返信アドレスをフォームからの人のメールアドレスに設定するコードを追加しました。

コード

    if (!string.IsNullOrEmpty(ReplyToAddress))
        oMsg.ReplyTo = new MailAddress(ReplyToAddress);

しかし、Gmail が定義済みの返信先アドレスを無視し、送信元アドレスを使用するという問題に遭遇しました。どうやらこれは設計によるものです。この設定をオーバーライドする方法に関する有用な情報が見つからなかったため、代わりに、この問題を抱えている他の人に役立つ可能性のある回避策を実行しました.

gmail (website@gmail.com) で一般的なメール アドレスを作成し、フィルターを設定しました。admin@domain.com からのメールはすべて admin@domain.com にリダイレクトする必要があります。

今、テストを実行すると、すべての電子メールが本来あるべき場所に送信され、フィールドへの返信がうまく機能します。

この問題が発生するたびに新しいアカウントを設定することを覚えておく必要があるため、最善の解決策ではありませんが、より良い代替手段が登場するまで、当面は機能する解決策です.

于 2013-03-25T15:39:34.057 に答える
0

エラーは発生しなかったが、電子メールも送信されなかったという、まったく同じ問題がありました。Google がアカウントをブロックすることがあります (通常はテスト中)。Gmail アカウントにログインしてみて、その内容を確認してください。

UPD1: gmail の送信済みフォルダーも確認してください。

UPD2: また、「差出人」メールが Gmail のメール アドレスと同じであることを確認してください。

于 2013-03-25T14:38:01.067 に答える