0

メールを送信するための C# Winforms で簡単なプログラムを作成しました。私のコードを以下に示します。

    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

        }
        public MailMessage rtnMail()
        {
            string to = txt_To.Text;
            string from = txt_From.Text;
            string subject = txt_Subject.Text;
            string body = txt_Body.Text;
            MailMessage message = new MailMessage(from, to, subject, body);
            return message;
        }

         //Button click event

        private void btn_Send_Click(object sender, EventArgs e)
        {
            SmtpClient smtp = new SmtpClient("smtp.gmail.com");
            smtp.Port = 587;
            smtp.Credentials = new System.Net.NetworkCredential("myanotherid@gmail.com", "password");
            smtp.EnableSsl = true;
            smtp.Timeout = 500000;
            smtp.Send(this.rtnMail());
        } 

    }

このコードを実行し、(宛先、送信元、本文、件名) のようなテキストボックスにすべての値を入力し、[送信] ボタンをクリックすると、アドレスにメールが届きます。

txt_Toという名前のテキストボックスに記載されています(これは私の受信者のGmailアカウントIDです)。しかし、どのアドレス(電子メールID)を見るたびに、Microsoftでこの電子メールを受け取りましたか

Outlook(Gmailのレシピイントアカウント用に設定しました)、行の最初の引数として言及された電子メールアドレスからこの電子メールを受け取ったと常に言います

以下のコード、

smtp.Credentials = new System.Net.NetworkCredential("myanotherid@gmail.com", "password");

私の質問は、私が電子メールを受信する電子メールアドレス(私のOutlook gmailで)が私が入れたものであるべきだと思っているので、私は何か間違ったことをしていますか?

「myanotherid@gmail.com」アドレスからではなく、txt_From という名前の TextBox。

回避策はありますか、またはそれに代わるものはありますか。

4

3 に答える 3

1

送信者のなりすましを防ぐためのGmailの保護だと思います。

yogibear@gmail.com として GMail にログインして、 barack.obama@whitehouse.govとして電子メールを送信することはできません。GMail の SMTP は、メッセージのヘッダーを書き換えて、誰が実際に電子メールを送信したかを正しく示します。

于 2013-06-29T20:19:56.940 に答える
0

あなたのコードは正しいようです。Gmail では、自分のものであることが証明されていない限り、別の「差出人アドレス」を指定することはできません。

[設定] > [アカウント] > [メールの送信者] に移動し、そこにアドレスを追加します。ここで設定したアカウントからのみ送信することを選択できます。

于 2013-06-29T20:56:58.313 に答える