Как отправить электронное письмо, используя SMTP-сервер Gmail с именем и фамилией в поле «от»? - PullRequest
0 голосов
/ 27 февраля 2020

Я отправляю электронные письма, используя SMTP-сервер Gmail от «Account Beta» до «Account Alpha». Когда я создал учетную запись бета-версии, я установил имя учетной записи как «Учетная запись» и его фамилию как «Бета-версия». Затем я вручную отправил электронное письмо на учетную запись Alpha, после чего добавил бета-версию к контактам Alpha, введя то же имя и фамилию и даже введя псевдоним «Account Beta».

Если я вручную отправлю электронное письмо от Beta для альфы, поле «from» правильно отображает «Account Beta». Однако, если я отправляю его через код, он отображает только электронную почту бета-версии учетной записи.

Это мой код:

        try
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("AccountBeta@gmail.com", "password"),
                EnableSsl = true
            };

            client.Send("AccountBeta@gmail.com", "AccountAlpha@gmail.com", subject, body);
        }
        catch (Exception e)
        {
            Console.WriteLine("An error occurred: " + e.Message);
        }

Конечно, subject и body - переданные строки к методу и password заменяется реальным паролем для AccountBeta@gmail.com. Я буду беспокоиться о большей безопасности, как только эта вещь будет работать нормально.

Замена client.Send("AccountBeta@gmail.com", "AccountAlpha@gmail.com", subject, body); с client.Send("Account Beta", "AccountAlpha@gmail.com", subject, body);

выдает исключение, что «Бета-версия аккаунта» не является действительным адресом электронной почты.

Как настроить его так, чтобы сообщения электронной почты, отправленные с моего кода, отображались как «Бета-версия аккаунта» "в папке" Входящие "учетной записи Alpha?

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете сделать это, используя вторую перегрузку client.send, для которой требуется объект MailMessage

Здесь MailAddress требует такой параметр, как MailAddress(fromEmail,displayName)



 try
 {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("AccountBeta@gmail.com", 
               "password"),
                EnableSsl = true
            };

            var mailMessage = new MailMessage(new MailAddress("AccountBeta@gmail.com", "Account Beta"), new MailAddress("AccountAlpha@gmail.com"))
                {
                    Subject = subject,
                    Body = body,
                };

                client.Send(mailMessage); 
}
catch (Exception e)
{
            Console.WriteLine("An error occurred: " + e.Message);
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...