Отправка электронной почты, как @mailto, но из кода за ASP.Net - PullRequest
2 голосов
/ 25 августа 2011

Сценарий: Мы используем элемент управления createwizard для создания пользователей для нашего веб-сайта. Когда у пользователя есть электронное письмо, мы просто отправляем ему электронное письмо с его именем пользователя и паролем, сообщая, что его учетная запись создана. Использование MailMessage и SMTPClient.

Проблема: Когда у пользователя нет электронной почты (например, временный сотрудник, студент), мне нужно иметь возможность сгенерировать электронную почту, но открыть ее через почтовый клиент создателя, чтобы они могли введите в письме сами / посмотрите логин и пароль. Аналогично функциональности @mailto.

Вопрос: Есть ли способ сделать это из кода? Я пробовал поиск, но везде мне говорят об использовании MailMessage и SMTPClient, которые мне не нужны.

Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 25 августа 2011

Вы можете создать почтовую ссылку и щелкнуть по ней с помощью JavaScript.

См. Здесь: Как программно щелкнуть ссылку с помощью JavaScript?

Или вы можете создать форму с текстовыми полями «Кому, теме и телу» и кнопкой «Отправить», где вы ждете, пока пользователь не заполнит ее (поле «to»), а затем отправите письмо с помощью smtpclient.

О sidenote: почему бы просто не запросить адрес электронной почты, а затем отправить его туда?

2 голосов
/ 25 августа 2011

Хорошо .. вы можете сделать response.write или использовать элемент управления замещением где-нибудь, который ссылается на функцию, которая генерирует надлежащим образом href = mailto: ....... и т. Д.html

если вы хотите, чтобы это делалось автоматически, вы можете выполнить перенаправление цели javascript

1 голос
/ 25 августа 2011

Я думаю, я наконец понял, что вы после. Этот код должен работать:

string sMailTo = "putmailhere@domain.com";
string subject = "New member data";
string body = "New member has been added.\nName: John Doe\nPassword: pass";
Process.Start(string.Format("mailto:{0}?subject={1}&body={2}", sMailTo, Uri.EscapeUriString(subject), Uri.EscapeUriString(body)));

Обратите внимание, что вы можете использовать только простой текст, из того, что я видел, вы не можете форсировать формат HTML.

Редактировать: поскольку это приложение ASP.NET, этот подход на самом деле бесполезен, так как почтовый клиент откроется на сервере, а не на компьютере посетителя.

Оставьте это для тех, кто использует WinForms или любую не веб-среду.

Для ASP.NET единственным способом является сценарий на стороне клиента, вызывающий <a href="mailto:..."> привязку.

...