Progress-servis55.ru

Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Java отправить email

Отправить email с помощью java

Я пытаюсь отправить email с помощью Java:

Я получаю ошибку :

Будет ли этот код работать для отправки email?

15 Ответов

Следующий код очень хорошо работает с сервером Google SMTP. Вам необходимо указать имя пользователя и пароль Google.

Обновление от 11 декабря 2015 года

Имя пользователя + пароль больше не является рекомендуемым решением. Это связано с тем, что

Я попробовал это сделать, и Gmail отправил email, используемый в качестве имени пользователя в этом коде. email говоря, что мы недавно заблокировали попытку входа в ваш Google Аккаунт, и направили меня на эту страницу поддержки: support.google.com/accounts/answer/6010255 так что он ищет, чтобы это сработало, учетная запись email, используемая для отправки, должна уменьшить их собственные безопасность

Google выпустила Gmail API — https://developers.google.com/gmail/api/?hl=en . Мы должны использовать метод oAuth2, а не username + password.

Вот фрагмент кода для работы с Gmail API.

GoogleMail.java

Чтобы построить авторизованную службу Gmail через oAuth2, вот фрагмент кода.

Utils.java

Чтобы обеспечить удобный для пользователя способ аутентификации oAuth2, я использовал JavaFX для отображения следующего диалогового окна ввода

Ключ для отображения удобного диалога oAuth2 можно найти в MyAuthorizationCodeInstalledApp.java и SimpleSwingBrowser.java

Следующий код сработал для меня.

Требуется jar файл

Длинный ответ-нет, так как код полагается на наличие сервера SMTP, работающего на локальной машине и прослушивающего порт 25. Сервер SMTP (технически MTA или агент передачи почты) отвечает за связь с почтовым агентом пользователя (MUA, который в данном случае является процессом Java) для получения исходящих сообщений электронной почты.

Теперь MTAs обычно отвечают за получение писем от пользователей для определенного домена. Таким образом, для домена gmail.com именно почтовые серверы Google отвечают за аутентификацию почтовых агентов пользователей и, следовательно, передачу почты в почтовые ящики на серверах GMail. Я не уверен, что GMail доверяет открытым почтовым серверам ретрансляции, но это, безусловно, непростая задача-выполнить аутентификацию от имени Google, а затем ретранслировать почту на серверы GMail.

Если вы прочитаете JavaMail FAQ при использовании JavaMail для доступа к GMail, вы заметите, что имя хоста и порт указывают на серверы GMail, а не на localhost. Если вы собираетесь использовать локальную машину, вам нужно будет выполнить либо ретрансляцию, либо пересылку.

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

Вам нужен сервер SMTP для отправки почты. Есть серверы, которые вы можете установить локально на вашем собственном компьютере, или вы можете использовать один из многих онлайн-серверов. Одним из наиболее известных серверов является Google:

Я только что успешно протестировал разрешенные конфигурации Google SMTP , используя первый пример из Simple Java Mail :

Обратите внимание на различные порты и транспортные стратегии (которые обрабатывают все необходимые для вас свойства).

Любопытно, что Google также требует TLS на порту 25, хотя инструкции Google говорят об обратном .

Прошло уже довольно много времени с тех пор, как это было опубликовано. Но по состоянию на 13 ноября 2012 года я могу проверить, что порт 465 все еще работает.

Смотрите ответ GaryM на этом форуме . Я надеюсь, что это поможет еще нескольким людям.

Будет ли этот код работать для отправки email?

Ну, нет, не без изменения некоторых деталей, так как вы получаете ошибку. В настоящее время вы пытаетесь отправить почту через сервер SMTP, работающий на localhost, но вы не используете ни один из них, следовательно, ConnectException .

Предполагая, что код OK (я действительно не проверял), вам придется либо запустить локальный сервер SMTP, либо использовать (удаленный) (с вашего ISP).

Что касается кода, Вы можете найти примеры в пакете загрузки JavaMail, как указано в FAQ :

В: где я могу найти какой-нибудь пример программы, которые показывают, как использовать JavaMail?
Ответ: Есть много примеров программы, включенные в JavaMail скачать пакет, в том числе простой программы командной строки, иллюстрирующие различные аспекты JavaMail API, a Swing-based GUI приложение, простое приложение на основе сервлетов, а также полное веб-приложение с использованием JSP страницы и библиотека тегов.

Следующий код работает очень well.Try это как java приложение с javamail-1.4.5.jar

Попробуй это сделать. это хорошо работает для меня. Убедитесь, что перед отправкой email u необходимо предоставить доступ для менее безопасного приложения в вашем аккаунте gmail. Поэтому перейдите по следующей ссылке и попробуйте использовать этот код java.
Активировать gmail для менее безопасных приложений

Вам нужно импортировать файл javax.mail.jar и файл activation.jar в ваш проект.

Вот рабочее решение братана. это гарантировано

1) Прежде всего откройте свой gmail аккаунт, с которого вы хотели отправить почту, как в вашем случае «»xyz@gmail.com»

3) Нажмите на раздел «Go to the «Less secure apps» в моем аккаунте.» опцион

4) затем включите его

Ваш код работает, помимо настройки соединения с сервером SMTP. Вам нужен работающий почтовый сервер (SMTP), чтобы отправить вам email за вас.

Читать еще:  Java api на русском

Вот ваш модифицированный код. Я закомментировал части, которые не нужны, и изменил создание сеанса, чтобы он принимал Аутентификатор. Теперь просто узнайте SMPT_HOSTNAME, USERNAME и PASSWORD, которые вы хотите использовать (обычно их предоставляет ваш интернет-провайдер).

Я всегда делаю это так (используя удаленный сервер SMTP, который я знаю), потому что запуск локального почтового сервера не так тривиален под Windows (очевидно, это довольно легко под Linux).

Я поставил свой рабочий класс gmail java на pastebin для вашего обзора, обратите особое внимание на метод «startSessionWithTLS», и вы можете настроить JavaMail, чтобы обеспечить ту же функциональность. http://pastebin.com/VE8Mqkqp

Действительно, 465 работает, и исключение, которое вы получаете, может быть связано с un open SMTP port 25. По умолчанию номер порта равен 25. Однако вы можете настроить его с помощью почтового агента, который доступен как open source- Mercury

Для простоты просто используйте следующую конфигурацию, и вы будете в порядке.

Для еще большего: ознакомьтесь с полным рабочим примером с нуля здесь

У меня такое же исключение, как и у тебя. Причина этого заключается в том, что на вашем компьютере не установлен и не работает smpt-сервер(поскольку ваш хост-localhost). Если вы используете windows 7, то у него нет SMTP сервера . поэтому вам придется скачивать, устанавливать и настраивать домен и создавать учетные записи. Я использовал hmailserver в качестве сервера smtp, установленного и настроенного на моей локальной машине. https://www.hmailserver.com/download

Вы можете найти полный и очень простой класс java для отправки электронных писем с помощью учетной записи Google(gmail) здесь,

Он использует следующие свойства

Похожие вопросы:

Я написал код Java, чтобы при нажатии кнопки поставщик email по умолчанию открывался автоматически, чтобы иметь возможность отправить email. есть ли возможность, что я могу прикрепить файл к email.

Я пытаюсь отправить Email с помощью Java сокетов, но не могу отправить Email (Я не использую mail API из Java, я просто хочу использовать сокеты для отправки Email).Пожалуйста, скажите мне, где я.

Как отправить уведомление Email в selenium webdriver с использованием java, когда какой-то сценарий не удается/передается между ними ??

Я пытался отправить email простым методом, и это было очень медленно. а некоторые советовали мне послать email через Asynchronous API. Это был мой старый вопрос Email код делает код медленнее в java.

Я знаю, что есть много таких вопросов, но они не сработали для меня так что если есть какой-то способ отправить email с java (yahoo, hotmail или gmail)

Я хочу отправить email из моего приложения, добавив адрес on behalf of. В настоящее время я использую apache common Email для отправки email, и, похоже, я не мог указать отправителя там. Поскольку я.

Отправка писем java — примеры

Для отправки электронной почты с использованием Java-приложения достаточно просто, но для начала на вашем компьютере должны быть установлены JavaMail API и Java Activation Framework (JAF). Вы можете загрузить последнюю версию JavaMail и JAF со стандартного веб-сайта Java.

Загрузите и разархивируйте эти файлы, во вновь созданных каталогах верхнего уровня вы найдете несколько jar-файлов для обоих приложений. Необходимо добавить файлы mail.jar и activation.jar в ваш CLASSPATH.

Отправить простое электронное письмо

Вот пример отправки простого электронного письма с вашего компьютера с помощью Java. Предполагается, что ваш локальный хост подключен к Интернету и достаточно способен отправлять электронную почту.

Пример

Скомпилируйте и запустите эту программу, чтобы отправить простое электронное письмо —

Если вы хотите отправить электронное письмо нескольким получателям, то для указания нескольких идентификаторов электронной почты будут использованы следующие методы:

Вот описание параметров —

  • type — Это будет установлено в TO, CC или BCC. Здесь CC представляет Carbon Copy, а BCC представляет Black Carbon Copy. Пример:
  • addresses — это массив адресов электронной почты. Вам нужно будет использовать метод InternetAddress() при указании идентификаторов электронной почты.

Отправить HTML письмо

Вот пример отправки электронной почты в формате HTML с вашего компьютера. Здесь предполагается, что ваш локальный хост подключен к Интернету и достаточно способен отправлять электронную почту. Этот пример очень похож на предыдущий, за исключением того, что здесь мы используем метод setContent() для установки содержимого, вторым аргументом которого является «text / html», чтобы указать, что содержимое HTML включено в сообщение.

Используя этот пример, вы можете отправить настолько большой, насколько вам нравится, контент HTML.

Пример

Скомпилируйте и запустите эту программу для отправки электронного письма в формате HTML —

Отправить вложение в E-mail

Вот пример, чтобы отправить электронное письмо с вложением с вашего компьютера. Здесь предполагается, что ваш локальный хост подключен к Интернету и достаточно способен отправлять электронную почту.

Пример

Скомпилируйте и запустите эту программу для отправки электронного письма в формате HTML —

Часть аутентификации пользователя

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

Остальная часть механизма отправки электронной почты останется такой, как описано выше.

Читать еще:  Javascript window close

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Работа с сообщениями JavaMail

Свободно распространяемая библиотека JavaMail предназначена для подключения к почтовым серверам с целью получения и отправки электронной почты с использованием протоколов SMTP, POP3 и IMAP. Библиотека позволяет отправлять сообщения с вложениями и удалять их на почтовом сервере.

Протоколы JavaMail API

  • SMTP (Simple Mail Transfer Protocol простой протокол передачи почты) — это широко используемый сетевой протокол для передачи электронной почты в сетях TCP/IP. Электронные почтовые серверы используют протокол SMTP для отправки и получения почтовых сообщений. Клиентские почтовые приложения обычно используют SMTP только для отправки сообщений на почтовый сервер и для ретрансляции с использованием порта 25 (465 для SSL). Т.е. протокол SMTP применяют для передачи исходящей почты.
  • IMAP (Internet Message Access Protocol) — протокол прикладного уровня для доступа к электронной почте. Протокол IMAP предоставляет пользователю широкие возможности для работы с почтовыми ящиками, расположенными на удаленном сервере. Почтовая программа, использующая данный протокол, получает доступ к хранилищу корреспонденции на сервере так, как будто эта корреспонденция расположена на компьютере получателя. Электронными письмами можно управлять с компьютера пользователя без пересылки файлов по сети. Протокол IMAP использует транспортный протокол TCP и прослушивает порт 143.
  • POP3 (Post Office Protocol Version 3 протокол почтового отделения 3-ей версии) — это стандартный сетевой протокол прикладного уровня, используемый клиентами электронной почты для получения почты с удаленного сервера по TCP/IP-соединению. Протокол POP3 поддерживает простые требования «загрузи-и-удали» для доступа к удаленным почтовым ящикам. Сервер POP3 прослушивает порт 110.

Отправка сообщения по протоколу SMTP

Создадим класс подготовки и отправки сообщения SendEmail.java. В классе определим поля сервера SMTP, поля авторизации на сервере и дополнительные поля вложения файла FILE_PATH и адресата для ответа REPLY_TO.

Конструктор класса SendEmail.java, настройка SMTP SSL

Конструктор класса SendEmail.java включает два параметра : email получателя и тему сообщения. Первоначально в конструкторе определяются свойства сервера; подключение к серверу будет выполняться по защищенному каналу SSL с авторизацией пользователя. Для этого создается класс авторизации auth типа Authenticator и формируется сессия класса javax.mail.Session, которой в качестве параметров передаются свойства properties и auth.

На следующем шаге формируется сообщение для отправки. Предварительно создаются адресаты (тип InternetAddress) email_from, email_to, reply_to . Адресат сообщения reply_to используется для случая, когда получатель должен отвечать не непосредственно отправителю email_from, который играет роль сервера перессылки. Данную опцию должен поддерживать сервер получателя, чтобы при нажатии на кнопку «Ответить» пользователю открывалось новое письмо с подстановкой в поле адресата «Кому» значения reply_to, а не email_from.

Конструктор объекта сообщения message типа MimeMessage в качестве параметра получает значение созданной защищенной с сервером SMTP сессии session.

Листинг аутентификатора EmailAuthenticator.java

Класс Authenticator обеспечивает доступ к защищенным почтовым ресурсам на сервере. В примерах этот класс используется для установления сессии с сервером. Когда потребуется авторизация, библиотека JavaMail будет вызывать метод getPasswordAuthentication.

Вложение файла в сообщение, MimeBodyPart

Для вложения файла в сообщение необходимо создать объект типа MimeBodyPart, в котором в качестве параметров указать путь к файлу и наименование файла. Следующий листинг представляет функцию формирования объекта MimeBodyPart с содержимом файла, который можно вкладывать в сообщение.

Отправка сообщения, Multipart

Функция sendMessage завершает оформление сообщения. Для этого создается объект mmp типа MimeMultipart, в который можно вложить другие объекты типа MimeBodyPart (текст, файл). Метод сообщения setContent, которому в качестве параметра передается объект MimeMultipart, определяет содержимое сообщения.

Для отправки сообщения используется метод send класса Transport, который имеет следующие перегруженные методы send :

Первый метод send отправит сообщение получателям, указанным в сообщении. Второй метод отправит сообщение всем получателям, определенным в массиве addresses за исключением тех, которые определены в сообщении.

Пример отправки сообщения

Для отправки сообщения создадим файл свойств email.properties, в котором определим все необходимые параметры сервера SMTP и параметры подключения. В примере используем почтовый сервер Yandex, хотя настройки позволяют использовать и другие известные почтовые сервера.

В файле свойств необходимо заполнить 4 поля, значения которых определены в виде многоточий. Если, к примеру, почтовый адрес в Yandex’e имеет вид qwerty@yandex.ru, то пользователь user будет иметь значение qwerty.

Следующий класс EmailTest используется для отправки сообщения. Сначала из файла свойств читаются параметры почтового сервера и параметры подключения. Для чтения файла используется класс InputStream, более подробно о котором сказано на странице Потоки ввода. После этого создается объект SendEmail и выполняется отправка сообщения.

Представленный пример с небольшими изменениями можно использовать для рассылки сообщений.

Чтение сообщений по протоколу IMAP

Как было отмечено выше протокол IMAP следует использовать для чтения почтовых сообщений. При использовании протокола IMAP программа должна подключиться к серверу и получить доступ к папке INBOX. Для настройки сессии подключения по протоколу IMAP необходимо указать следующие данные :

  • адрес почтового сервера (в следующем примере мы используем imap.yandex.ru);
  • порт подключения — 993;
  • защита соединения — SSL.
Читать еще:  Ошибка передачи данных

Для доступа к почтовому серверу также необходимо указать логин и пароль пользователя. Если для получение почты (подключения к почтовому серверу) используется ящик вида «login@yandex.ru», то логином является часть адреса до знака «@».

Листинг примера чтения почтовых сообщений

В следующем примере сначала настраивается сессия с почтовым сервером для работы по «закрытому» каналу связи. После этого выполняется чтение последнего сообщения папки «INBOX», которое было отправлено в предыдущем примере. В консоль выводится информация этого последнего сообщения.

Чтобы пример сработал необходимо вместо многоточий подставить реальные логин и пароль.

В примере используются абстрактные классы

  • Store — представляет собой хранилище сообщений, поддерживаемых почтовым сервером и сгруппированных по владельцу,
  • Folder — предоставляет возможность иерархически организовывать сообщения. Папки могут содержать сообщения и поддиректории.

В консоль будет выведено следующее сообщение. Конечно, количество сообщений в почтовом ящике «INBOX» будет другим.

Скачать примеры использования JavaMail

Исходные коды рассмотренных примеров использования библиотеки JavaMail в виде проекта Eclipse можно скачать здесь (930 Кб).

Отправить письмо с помощью программы Java

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

Чтобы отправлять электронные письма с использованием Java, вам нужны три вещи:

  • JavaMail API
  • Java Activation Framework (JAF)
  • Данные вашего SMTP-сервера

Вы можете загрузить последнюю версию JavaMail API и JAF с официального сайта Java. После успешной загрузки этих двух файлов, распакуйте их. Добавить mail.jar, smtp.jar и activation.jar файл в пути к классам , чтобы иметь право отправлять сообщения электронной почты.

После добавления этих файлов выполните следующие шаги и напишите Java-программу для отправки электронной почты:

  • Создайте новый объект сеанса, вызвав метод getDefaultInstance () и передав свойства в качестве аргумента, чтобы получить все важные свойства, такие как имя хоста SMTP-сервера и т. Д.
  • Создайте объект MimeMessage, передав объект сеанса, созданный на предыдущем шаге.
  • Последний шаг — отправка электронной почты с использованием javax.mail.Transport.

// Java программа для отправки электронной почты

public class SendEmail

public static void main(String [] args)

// электронный идентификатор получателя.

String recipient = «recipient@gmail.com» ;

// идентификатор электронной почты отправителя.

String sender = «sender@gmail.com» ;

// используя хост в качестве локального хоста

String host = «127.0.0.1» ;

// Получение системных свойств

Properties properties = System.getProperties();

// Настройка почтового сервера

properties.setProperty( «mail.smtp.host» , host);

// создание объекта сеанса для получения свойств

Session session = Session.getDefaultInstance(properties);

MimeMessage message = new MimeMessage(session);

// Set From Field: добавление электронной почты отправителей в поле from.

message.setFrom( new InternetAddress(sender));

// Set To Field: добавление электронной почты получателя в поле from.

message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));

// Установить тему: тема письма

message.setSubject( «This is Suject» );

// установить тело письма.

message.setText( «This is a test mail» );

System.out.println( «Mail successfully sent» );

catch (MessagingException mex)

Отправка электронной почты нескольким получателям

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

Для добавления Email в поле «TO» вы можете использовать Message.RecipientType.To. Точно так же для добавления Email в полях «CC» и «BCC», вам нужно будет использовать Message.RecipientType.CC и Message.RecipientType.BCC.
Аргумент адрес в указанном выше способе представляет собой массив , содержащий список всех Email-ID. Вам придется использовать метод InternetAddress () для указания адресов электронной почты.
Предположим, вы хотите отправить электронное письмо 4 людям. Вы должны создать строковый массив размером 4 и сохранить в нем адреса электронной почты получателей. Следуйте приведенной выше программе для отправки простого электронного письма и вместо добавления одного получателя добавьте нескольких получателей, используя метод addRecipients, как показано ниже:

// создаем новый массив String

String[] recipients = new String[ 4 ];

// добавить адреса электронной почты

recipients[ 0 ] = first @gmail .com

recipients[ 1 ] = second @gmail .com

recipients[ 2 ] = third @gmail .com

recipients[ 3 ] = fourth @gmail .com

// внутри блока try вместо использования addRecipient ()
// используем addRecipients ()

// указать тип поля (TO, CC, BCC)
// передать массив адресов электронной почты получателей

message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipients));

Отправка писем с помощью HTML-шаблона

Иногда электронные письма отправляются с шаблоном HTML, т. Е. Тело письма написано в HTML. Это делает письмо хорошо отформатированным и привлекательным по внешнему виду. Программа для отправки электронной почты с шаблоном HTML почти такая же, как и для отправки обычной электронной почты. Разница в том, что мы должны использовать метод setContent () вместо метода setText () для указания тела письма, а в методе setContent () мы должны указать второй аргумент как «text / html», и первый аргумент будет HTML код Давайте теперь посмотрим на программу для отправки электронной почты с HTML-шаблонами:

// Java программа для отправки электронной почты
// с шаблонами HTML

Ссылка на основную публикацию
Adblock
detector