Вітаю. Оскільки графоманія у мене прогресує, вирішив додати ще одну статтю. Стаття буде, як завжди, з прикладами на C#, але більш-менш умілий VB"шник з легкістю перепише весь код під VB.NET.
Почнемо, мабуть
Для відправки E-Mailнам потрібно скористатися трьома об'єктами. System.Net.Mail.SmtpClient для надсилання повідомлення, System.Net.Mail.MailMessage для представлення повідомлення, і System.Net.NetworkCredential для авторизації.
Створимо клієнт:
Var client = новий SmtpClient("$Mail-Server-Address$", $Mail-Server-Port$);
Референція конструктора:
SmtpClient(string host, int port);
Створимо екземпляр класу MailMessage:
Var msg = новий MailMessage("from", "to");
Тепер поставимо тему і вміст листа (до речі, все можна поставити і в конструкторі). А також логін та пароль smtp-клієнту. Потім відправимо лист методом Send нашого об'єкта client:
Var client = New SmtpClient("smtp.yandex.ru"); var msg = новий MailMessage("from", "to"); msg.Subject = "My test message"; msg.Body = "Hello, мій хлопець! Just imagine, що я хотів повідомити про бездоганний program для того, щоб скористатися нею літературою, щоб ви billion times only by several clicks!"; msg.SubjectEncoding = Encoding.UTF8; msg.BodyEncoding = Encoding.UTF8; // пріоритет msg.Priority = MailPriority.High; // Тіло листа в html? msg.IsBodyHtml = false; client.Credentials = новий NetworkCredential("login", "password"); client.Send(msg);
От і все. Не забудьте усі необхідні дані вказати правильно.
Коментарі ()
ruslang02 30
CoolHacker, чи можна у тебе взяти цей код для 3 частини веб-броузера?
Coolhacker 770 ruslang02 30Дякую, я його використовуватиму для відправки посилань по e-mail
як у FireFox
Програмне відправлення email, використовуючи різні сервіси
- .NET ,
Дуже часто доводиться стикатися з відправкою електронних листівз програмного коду. За прикладами далеко не треба ходити.
Ця стаття є підказкою і не відкриває нічого нового, але перед тим, як її писати, подивився схоже в інтернеті і був досить здивований тому, що майже скрізь пропонують або не працююче або застаріле рішення, або просто написано неписьменно.
Перше, що не варто робити за цими прикладами – це використовувати System.Web.Mail, який вже давно застарів, а починаючи з Visual Studio 2010 бібліотеку System.Web навіть і не додати, не знаючи повного шляхудо відповідної DLL.
Замість цього пропонується використовувати бібліотеку System.Net.
using System.Net; using System.Net.Mail;
Отже, найпростіше, воно ж найважливіше і найчастіше використовується - це відправка листа зі свого поштового сервера, на якому настроєно SMTP-клієнт. Як ви розумієте, сервер може бути як і той, на якому працює додаток, так і віддалений, на якому ви маєте право надсилати листи без додаткової авторизації.
Приклад коду для надсилання листа з локальної машини:
За допомогою поштових служб, таких як Gmail, Yandex, Mail.ru і т.д. все те саме, тільки додаються параметри з авторизацією.
SMTP-сервер: smtp.gmail.com
Порт: 587
using (MailMessage mm = новий MailMessage("Name
SMTP-сервер: smtp.yandex.ru
Порт: 25
using (MailMessage mm = новий MailMessage("Name
SMTP-сервер: smtp.mail.ru
Порт: 25
using (MailMessage mm = новий MailMessage("Name
Якщо у вас Поштова скринькана сервісі mail.ru закінчується на inbox.ru, list.ru або bk.ru, відповідно змінюється і адреса SMTP-сервера (smtp.inbox.ru, smtp.list.ru і smtp.bk.ru).
Як ви бачите, щоб використовувати будь-який інший поштовий сервіс у ваших програмах, необхідно тільки з'ясувати адресу SMTP-сервера і порт, а також правила авторизації.
Необхідно також пам'ятати, що практично всі сторонні поштові послуги накладають ліміти на кількість надісланих листів у період часу.
email, відправка листів, smtp
Однією з найбільш популярних функцій на сайті є форма заявки або замовлення, дані з якої надсилаються на пошту власнику сайту. Як правило, такі форми є простими і складаються з двох трьох полів для введення даних. Як створити таку форму замовлення? Тут потрібне використання мови розмітки HTML та мови програмування PHP.
Мова розмітки HTML сама по собі нескладна, потрібно лише розібратися в тому як і де ставити ті чи інші теги. З мовою програмування PHP все трохи складніше.
Для програміста створити таку форму не важко, а от HTML верстальнику може здатися складним деякі дії.
Створюємо форму відправлення даних у html
Перший рядок буде наступним
Тепер зберемо всі разом.
Тепер зробимо так, щоб поля у формі стали обов'язковими для заповнення. Маємо наступний код:
Створюємо файл, який приймає дані з HTML форми
Це буде файл із ім'ям send.php
У файлі першому етапі потрібно прийняти дані з посаду масиву. Для цього створюємо дві змінні:
$fio = $_POST["fio"];
$email = $_POST["email"];
Перед назвами змінних у php ставиться знак $, наприкінці кожного рядка ставиться крапка з комою. $_POST це масив у який передаються даний з форми. У формі html при цьому вказано метод відправлення method = "post". Так, прийнято дві змінні з форми html. Для захисту свого сайту потрібно провести ці змінні через кілька фільтрів - функцій php.
Перша функція перетворює всі символи, які користувач спробує додати до форми:
При цьому нові змінні в PHP не створюються, а використовуються вже наявні. Що зробить фільтр, він перетворить символ "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
Друга функція декодує URL, якщо користувач спробує його додати у форму.
$fio = urldecode($fio);
$email = urldecode($email);
Третьою функцією ми видалимо прогалини з початку і кінця рядка, якщо такі є:
$ fio = trim ($ fio);
$ email = trim ($ email);
Існують інші функції, що дозволяють відфільтрувати змінні php. Їх використання залежить від того, наскільки ви побоюєтеся того, що зловмисник спробує додати програмний код у цю форму надсилання даних на пошту html.
Перевірка даних, що передаються від HTML форми у файл PHP
Для того, щоб перевірити, чи цей код працює, чи передаються дані можна просто їх вивести на екран за допомогою функції echo:
echo $fio;
echo "
";
echo $email;
Другий рядок тут потрібний для того, щоб розділити виведення змінних php на різні рядки.
Надсилаємо отримані дані з форми HTML на пошту за допомогою PHP
Для надсилання даних на пошту потрібно скористатися функцією mail у PHP.
mail("на яку адресу відправити", "тема листа", "Повідомлення (тіло листа)","From: з якого email відправляється лист \r\n");
Наприклад, потрібно надіслати дані на email власника сайту чи менеджера [email protected]
Тема листа має бути зрозумілою, а повідомлення листа має містити те, що вказав користувач у формі HTML.
mail(" [email protected]", "Заявка із сайту", "ПІБ:".$fio.". E-mail: ".$email ,"From: [email protected]\r\n");
Необхідно додати умову, яка перевірить чи відправилася форма за допомогою PHP на вказану адресу електронної пошти.
if (mail(" [email protected]", "Замовлення із сайту", "ПІБ:".$fio.". E-mail: ".$email ,"From: [email protected]\r\n"))
{
echo "повідомлення успішно надіслано";
) else (
}
Таким чином, програмний код файлу send.php, який відправить дані HTML форми на пошту, буде виглядати наступним чином:
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$ fio = trim ($ fio);
$ email = trim ($ email);
// echo $ fio;
// echo "
";
// echo $ email;
if (mail(" [email protected]", "Заявка із сайту", "ПІБ:".$fio.". E-mail: ".$email ,"From: [email protected]\r\n"))
( echo "повідомлення успішно надіслано");
) else (
echo "при надсиланні повідомлення виникли помилки";
}?>
Три рядки для перевірки, чи передаються дані у файл закоментовані. При необхідності їх можна видалити, оскільки вони були потрібні тільки для налагодження.
Поміщаємо HTML та PHP код відправлення форми в один файл
У коментарях до цієї статті багато хто запитує про те, як зробити, щоб і HTML форма і PHP код відправки даних на пошту знаходилися в одному файлі, а не двох.
Для реалізації такої роботи потрібно помістити HTML код форми у файл send.php та додати умову, яка перевірятиме наявність змінних у масиві POST (цей масив передається з форми). Тобто, якщо змінні в масиві не існують, потрібно показати користувачеві форму. Інакше потрібно прийняти дані з масиву та надіслати їх адресату.
Давайте подивимося, як змінити PHP код у файлі send.php:
//перевіряємо, чи існують змінні в масиві POST
if(!isset($_POST["fio"]) and !isset($_POST["email"]))(
?> ) else (
//показуємо форму
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = htmlspecialchars($fio);
$email = htmlspecialchars($email);
$fio = urldecode($fio);
$email = urldecode($email);
$ fio = trim ($ fio);
$ email = trim ($ email);
if (mail(" [email protected]", "Заявка із сайту", "ПІБ:".$fio.". E-mail: ".$email ,"From: [email protected]\r\n"))(
echo "Повідомлення успішно надіслано";
) else (
echo "При надсиланні повідомлення виникли помилки";
}
}
?>
Існування змінної в масиві POST ми перевіряємо PHP функцією isset(). Знак оклику перед цією функцією в умові означає заперечення. Тобто, якщо змінної не існує, потрібно показати нашу форму. Якби я не поставив знак оклику, то умова дослівно означало б - "якщо існує, то показати форму". А це неправильно у нашому випадку. Звичайно, ви можете перейменувати його в index.php. Якщо будуть перейменовувати файл, то не забудьте перейменувати назву файлу і в рядку