Отправить письмо с использованием SMTP и контролировать адрес отправителя - PullRequest
2 голосов
/ 02 июня 2011

Я пытаюсь отправить электронное письмо с помощью приложения c #, следующий код работает.

SmtpClient MailClient = new SmtpClient("smtp.gmail.com");
MailClient.EnableSsl = false;
MailClient.Credentials = new NetworkCredential("Ryan.White", "Password");
MailMessage Msg = new MailMessage();
Msg.From = new MailAddress("Sender.name@gmail.com");
Msg.To.Add(new MailAddress("Ryan.White@gmail.com"));
Msg.Subject = "testSub";
Msg.Body = "testBody";

MailClient.Send(Msg);

Но SMTP-сервер Gmail отправляет адрес электронной почты gmail (Ryan.White@gmail.com),

независимо от адреса MSG.FROM (Sender.name@gmail.com).

Можно ли отправить электронное письмо и управлять адресом отправителя с помощью C # /. NET?

Или, альтернативно, отправить письмо без аутентификации?

Я знаю, что в UNIX вы можете управлять адресом отправителя командой 'Mail'.

1 Ответ

4 голосов
/ 02 июня 2011

Gmail делает это по соображениям безопасности, в противном случае спамерам будет легко отправлять электронные письма, которые, как представляется, приходят с поддельных адресов.

Вы правильно закодировали это, и C # попытается установить адрес отправителякак Sender.Name@gmail.com, но SMTP-сервер имеет последнее слово.Если бы у вас была авторизация для отправки в качестве другого пользователя, это работало бы, как в случае с серверной средой Exchange, где вы проходите аутентификацию как администратор.Однако Gmail, похоже, не позволяет этого.Вам нужно будет войти как Sender.name, чтобы иметь возможность отправлять электронные письма от имени этого пользователя.

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