Как отправить электронное письмо из программы _without_, используя существующую учетную запись? - PullRequest
10 голосов
/ 27 августа 2008

Я бы хотел, чтобы моя программа могла отправлять мне сообщения об ошибках по электронной почте. Как я могу сделать это без жесткого кодирования имени пользователя / пароля / SMTP-сервера / и т.д. в код? (Это позволит пользователям декомпилировать программу и получить эту учетную запись электронной почты.)

Мне сказали, что вы могли бы кое-что сделать с помощью telneting на порт 25, но я очень неясен в деталях. Большинство фрагментов кода в Google предполагают, что у вас уже есть существующая учетная запись, которая не работает в этой ситуации.

Я использую .NET v3.5 (в частности, C #), но я думаю, что в большинстве языков идеи достаточно похожи. Пока вы понимаете, что я делаю это для автономного приложения и не предоставляю мне код PHP или что-то в этом роде, все будет в порядке.

Ответы [ 6 ]

8 голосов
/ 27 августа 2008

Пока ваша учетная запись находится на gmail.com, настройте gmail-smtp-in.l.google.com в качестве исходящего SMTP-сервера в вашей программе. Вам не нужно указывать пароль для отправки электронной почты на учетные записи gmail при использовании этого сервера.

7 голосов
/ 27 августа 2008

Я бы создал веб-сервис для подключения. Этот веб-сервис должен отправить электронное письмо на основе данных, предоставленных вашей программой. Все конфиденциальные данные доступа хранятся на стороне веб-службы, поэтому они безопаснее.

1 голос
/ 27 августа 2008

Если программе необходимо отправить вам электронное письмо напрямую, она должна каким-то образом получить эту информацию, чтобы решительный злоумышленник также мог получить эту информацию.

Рассматривали ли вы размещение простой формы http или веб-службы где-нибудь, чтобы вы могли опубликовать необходимую информацию из приложения (проверка подлинности не требуется) и либо сохранить ее для просмотра вручную позже, либо отправить электронное письмо от этот сервер?

0 голосов
/ 06 января 2011

То, что вам нужно сделать, это знать SMTP-сервер используемого вами интернет-провайдера, потому что, когда вы используете SMTP-сервер вашего собственного интернет-провайдера, вы не рассматриваете спам как почтовый ретранслятор, поэтому вы можете пройти без какой-либо аутентификации .

К сожалению, не всегда возможно легко получить эту информацию ИЛИ есть небольшое исключение, которое не позволит вам войти анонимно, как при использовании Exchange в компании ...

Сначала я подумал о шифровании вашей информации и дешифровании ее во время выполнения, но она все равно будет доступна, прослушивая сетевую карту. Однако вы можете объединить это с веб-сервисом, который будет выполнять расшифровку и рассылку для вас (или напрямую отправлять информацию в веб-сервис, который вы когда-либо предпочитаете), как это уже было предложено другими.

0 голосов
/ 27 августа 2008
MailMessage msg = new MailMessage("someone@foo.com", "someoneelse@bar.com");
msg.Subject = "Check it out!";
msg.Body = "Visit stackoverflow.com!";
SmtpClient client = new SmtpClient("some.smtp.server", 25);
client.Send(msg);
0 голосов
/ 27 августа 2008

Я думаю, что лучшим планом было бы представить информацию об ошибке какой-либо службе (в простом случае, веб-форме), работающей под вашим контролем, которая затем могла бы отправить электронное письмо (или зарегистрировать его каким-либо другим подходящим способом).

Если предполагается, что отправка электронной почты будет полезна для конечного пользователя, другой вариант может заключаться в том, чтобы пользователь вводил свой собственный SMTP-сервер (и имя пользователя / пароль, если требуется). - В системах Unix вы можете просто использовать sendmail. и полагаться на пользователя, чтобы он был настроен правильно. Раньше я работал в системе, которая использовала этот подход для отправки пользовательских отчетов о запланированных задачах системы, и это работало довольно хорошо.

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