Как отправить электронное письмо без ввода пароля?
Я сделал это:
client.Port = 587;
client.Host = "smtp.gmail.com";
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = true;
client.EnableSsl = true;
MailMessage mail = new MailMessage();
mail.From = new MailAddress(emailtxt.Text.Trim());
mail.To.Add("myadressemail@gmail.com");
mail.Subject = "test";
mail.Body = "test";
mail.IsBodyHtml = true;
client.Send(mail);
Можно ли отправить электронное письмо на Gmail без авторизации? Если нет, то есть ли лучшие альтернативы?
Менее безопасные приложения отключены.
Gmail потребует некоторой формы аутентификации, независимо от того, отправляете ли вы электронные письма через SMTP или используете их специальный API, который они предоставляют. В противном случае любой мог бы выдать себя за кого угодно, и Gmail перестал бы быть полезным. Какова цель этого письма? Какое-то уведомление?
@mason Это контактная форма. Пользователь может отправить нам электронное письмо с некоторыми проблемами или вопросом.
Обратите внимание, что электронная почта развивалась, и большинство серверов в наши дни требуют, чтобы отправляющий сервер был настроен для определения того, кто отправляет электронные письма, а также для идентификации сервера, который отправляет электронные письма. Это делается для того, чтобы затруднить рассылку спама под видом случайного человека. Вам абсолютно не следует создавать программу, которая требует, чтобы smtp-сервер, через который вы отправляете, принимал анонимные запросы, так как это может пометить электронные письма как спам, заслуженный или нет.
@LasseV.Karlsen Так что мне делать. Я не могу заставить пользователя ввести пароль пользователя. Или я могу?
Вы мог, но это не рекомендуется. Вместо этого создайте специальную учетную запись электронной почты для вашего приложения, чтобы отправлять электронные письма, например «noreply@example.com» или «notifications@example.com», а затем отправьте электронное письмо от этой учетной записи.
Почему бы просто не заставить форму отправлять данные на ваш собственный сервер, который затем может использовать ваш собственный smtp-сервер для отправки электронной почты?
Хорошо, но когда пользователь отправляет письмо НАМ. Я хочу увидеть его адрес электронной почты, потому что, например, я хочу отправить ему что-нибудь в ответ.
Итак, попросите пользователя указать адрес электронной почты при заполнении формы. Затем вы можете добавить его в тело или тему электронного письма или использовать заголовок Reply-To.
@mason, звучит хорошо.
@mason, а теперь можно скрыть в `mail.To.Add("myadressemail@gmail.com")` адрес электронной почты? чтобы его не было видно с уровня кода для пользователей
Я не понимаю, что вы имеете в виду, скрывая это. Вы говорите об обфускации кода? Что это за приложение? АСП.НЕТ? Выиграть формы? ВПФ?
@mason Да, запутывает. WinForm (.NET/С#)
Целеустремленный пользователь всегда сможет перепроектировать запутанное приложение. Единственный верный способ помешать им что-то получить — это вообще не давать им это. Поэтому вам нужно либо изменить поведение электронной почты, чтобы не полагаться на наличие учетных данных, запустив программу электронной почты пользователя по умолчанию, предварительно заполненную адресом вашей компании в строке «Кому», либо заставить приложение Win Forms обмениваться данными через сети к конечной точке, которую вы контролируете (например, к размещенному вами HTTP API), и пусть этот API будет отвечать за отправку электронной почты.
Вы в значительной степени спрашиваете, как сделать подделку электронной почты; как уже упоминалось, «хорошая практика» в контактных формах состоит в том, чтобы иметь свой собственный внутренний, выделенный адрес электронной почты И запрашивать у пользователя / клиента их адрес электронной почты как часть контактной формы.
Is it possible to send an email to Gmail without an authorization?
Нет
If not, are there any better alternatives?
Как упоминает Мейсон в комментариях, основными альтернативами являются:
В современном Интернете нет реального способа обойти необходимость аутентификации. Современный способ справиться с этим в автоматизированных системах обычно заключается в использовании сертификатов и API-ключей, но электронная почта — довольно старый протокол с более ограниченными методами аутентификации.
Отправить электронное письмо к gmail? Конечно, вам просто нужно отправить письмо от на сервер, который позволяет отправлять электронные письма. Если, с другой стороны, вы хотите отправлять электронные письма с использованием gmail, вам абсолютно необходимо пройти аутентификацию на их сервере.