Эта статья - двенадцатая статья серии VHR с адресом проекта https://github.com/lenve/vhr
Отправка электронной почты также является общей проблемой. Хотя код прост, многие друзья не очень хорошо понимают процесс, поэтому они все еще планируют поговорить с вами по этой теме.
Соглашение по электронной почте
Мы часто слышим различные протоколы электронной почты, такие как SMTP, POP3 и IMAP. Итак, каковы функции этих протоколов и каковы различия? Давайте сначала обсудим этот вопрос.
SMTP-это протокол приложения, основанный на TCP/IP. Его статус несколько похож на HTTP. Номер порта по умолчанию на сервере SMTP составляет 25. Видя это, друзья могут подумать, что, поскольку протокол SMTP основан на протоколе уровня приложений TCP/IP, могу ли я также отправить электронное письмо через сокет? Ответ да.
В жизни мы должны пройти следующие шаги:
1. Сяо Ван из Шэньчжэна впервые доставил электронное письмо на почтовое отделение в Шэньчжэне
2. Почтовое отделение в Шэньчжэне доставит почту в почтовое отделение в Шанхае
3. Сяо Чжан из Шанхая приехал на почтовое отделение, чтобы забрать почту
Это уменьшенная версия процесса отправки почты в жизни. Эти три шага могут соответствовать нашему процессу отправки электронной почты отдельно. Предположим, что электронные письма отправляются с [email protected] по адресу [email protected]:
[email protected] FIRSTERSERESE EMAIL на почтовый сервер Tencent
2. Почтовый сервер Tencent доставляет нашу почту на почтовый сервер Netease
[email protected] Войдите в систему на сервере по электронной почте Netease, чтобы просмотреть электронные письма
Доставка электронной почты является примерно этим процессом, который включает в себя несколько протоколов. Давайте посмотрим на это отдельно.
Полное имя протокола SMTP - простой протокол передачи почты, который переводится как простой протокол передачи почты. Он определяет правила связи между программным обеспечением Mail Client и SMTP -сервером и SMTP -сервером. Другими словами, процесс доставки электронных писем на SMTP -сервер Tencent сначала использует SMTP -протокол, а затем SMTP -сервер Tencent предлагает электронные письма для SMTP Server Netease по -прежнему использует протокол SMTP, который используется для получения электронных писем. Полное название протокола POP3 - это протокол почтового отделения, который переводится как протокол почтового отделения. Он определяет правила связи между почтовым клиентом и сервером POP3. Итак, в каком сценарии будет использован этот протокол? Когда электронное письмо прибывает на SMTP -сервер NetEase, пользователю [email protected] необходимо войти на сервер для просмотра электронной почты. В настоящее время используется соглашение: поставщик услуг электронной почты предоставит каждому пользователю специальное место для хранения электронной почты. После того, как SMTP -сервер получает электронное письмо, он сохраняет электронное письмо для соответствующего пространства хранения электронной почты соответствующего пользователя. Если пользователь хочет прочитать электронное письмо, его необходимо заполнить через электронный сервер электронной почты POP3 по провайдеру электронной почты. Наконец, некоторые друзья, возможно, слышали о протоколе IMAP, который является расширением протокола POP3, с более сильными функциями и аналогичными функциями. Я не буду повторять это здесь.
Подготовка к отправке электронных писем QQ
Прежде всего, нам нужно войти в веб -версию электронной почты QQ и нажать кнопку «Настройки» выше:
Затем нажмите на вкладку учетных записей:
Найдите опцию, чтобы включить POP3/SMTP на вкладке учетной записи, следующим образом:
Нажмите, чтобы включить соответствующие функции. Процесс активации требует проверки номера мобильного телефона. Просто следуйте шагам и не уточните. После того, как он будет включен успешно, вы можете получить код авторизации, сохранить номер и использовать его какое -то время.
Тогда нам нужен пакет Javaxmail Jar. Друзья могут напрямую скачать его на Maven Central Warehouse. Я не пойду к следующим деталям здесь.
отправлять
Простая электронная почта
Если мы отправим только простой текст, метод отправки будет относительно простым. Весь процесс можно разделить на три шага следующим образом:
Шаг 1: Создайте основную среду почтового сервера SMTP
Свойства Properties = new Properties (); Properties.SetProperty ("mail.host", "smtp.qq.com"); Properties.setProperty ("mail.transport.protocol", "smtp"); Properties.setproperty ("mail.smtp.auth", ", "true"); Properties.SetProperty ("mail.Smtp.socketFactory.class", "javax.net.ssl.sslsocketFactory"); Properties.SetProperty ("mail.smtp.port", "465"); Sessions = session.getDefaultInstance (Properties); session.setdebug (true);Шаг 2: Построить электронное письмо
Mimemessage mimemessage = new Mimemessage (Session); Mimemessage.addrecipients (message.recipienttype.to, "[email protected]"); // Установить получатель mimemessage.addrecipents (message.recipienttype.cc, "[email protected]"); mimemessage.setfrom ("[email protected]"); // отправитель электронной почты mimemessage.setsubject ("Тест электронной почты"); // Тема электронной почты mimemessage.setcontent ("Привет, это тестовое письмо", "Текст/html; charset = utf-8");
Шаг 3: Отправить электронное письмо
Transport Transport = session.getTransport (); Transport.Connect ("smtp.qq.com", "[email protected]", "Код авторизации, только что применяемый"); Transport.sendmessage (mimemessage, miMemessage.getallRecients ()); // Отправить электронное письмо, второй параметр - это Transpectage.clase ();Сложные электронные письма
При отправке сложных электронных писем первые и третьи шаги одинаковы. Только второй шаг более неприятен при построении электронных писем. Затем позвольте мне продемонстрировать вам электронное письмо, которое отправляет изображение и текст + два вложения. Чтобы отправить сложные электронные письма, вы должны сначала быть знакомы с тремя понятиями, следующим образом:
1. Mimemessage: Этот класс является почтовым сообщением, которое может понимать типы и заголовки MIME.
2. Mimemultipart: этот класс определяет методы добавления, удаления и получения разных частей электронной почты
3.mimebodypart: этот объект представляет часть содержимого объекта Mimemessage. Считается, что в каждом MimeBodyPart есть две части: тип MIME и сопоставление содержимого этого типа
Полный процесс генерации электронной почты заключается в следующем (см. Выше для первого и третьего шага):
Mimemessage mimemessage = new Mimemessage (Session); Mimemessage.addrecipients (message.recipienttype.to, "[email protected]"); // Установить получатель mimemessage.addrecipents (message.recipienttype.cc, "[email protected]"); mimemessage.setfrom ("[email protected]"); // отправитель электронной почты mimemessage.setsubject («Тестная тема электронной почты»); // Тема электронной почты miMemultipart mixed = new MiMemultipart («Mixed»); mimemessage.setContent (смешанный); // seled Сообщение MIME по электронной почте в состав Combine. MIMEMEMEMEMENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTENTER MimeBodyPart (); // Создать вложение 1MimeBodyPart attle2 = new MimeBodyPart (); // Создать вложение 2mimeBodyPart Content = new MimeBodyPart (); // Создать корпус электронной почты Mixed.AddyPARTPART (ATTACT1); // Добавить приложение одно к корпусу сообщения MIME Mixed.AddyBodyPart (ATTACT2) ;/ Добавить в привязанность к обращению к MIME MISE. mixed.addbodypart (content); // Добавить тело в тело сообщения FileDataSource fds1 = new FileDataSource (New File ("c: //users//sang//desktop//1.png")); // СОЗДАТЬ ИСТОЧНИК ДАННЫХ ДАННЫЙ ONE DATAHANDLE DH1 = NEW DATAHANDLE (FDS1); Прикрепить1.setDataHandler (dh1); // Установите источник вложения данных. FILDATASource FDS2 = New FileDataSource (новый файл ("c: // users // sang // desktop // blog note.xlsx")); datahandler dh2 = new DataHandler (fds2); Attach2.setDataHandler (dh2); attle2.seplename (mimeUtility.encodext (dh2); Назовите, если есть китайский, вы можете кодировать его через метод EncodeText в классе миматуте, чтобы избежать искаженного mimemultipart bodymiMemultipart = new Mimemultipart («Связанный»); // Установить тип мима содержания тела. SetContent (BodyMiMemultipart); // Добавить BodyMemantipart к корпусу тела MIMEPARTARTART wordypart = новая корпус. Mimebodypart (); // html часть bodypart.setContent ("<h1> Привет всем, это тестовая электронная почта <img src = 'cid: 2.png' // </h1>", "text/html; charset = utf-8"); mimebodypart picapart = newbodypart (); новый DataHandler (новый FileDataSource ("c: //users//sang//desktop/2.png")); picpart.setdatahandler (datahandler); picpart.setContentId ("2.png"); // Добавить HTML и части изображения тела в BodyMiMeMultIpart.AddBodyPart (BodyPart); BodyMiMemultipart.AddBodyPart (Picpart); mimemessage.savechanges ();
Хорошо, так просто отправлять QQ электронные письма Java Mail. Что касается других вещей, таких как 163, Sina и т. Д., Стиль письма похож, я не буду уточнять его здесь.
Суммировать
Выше приведено код реализации функции электронной почты QQ в Springboot, представленный вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!