Используйте Javamail, чтобы отправить электронные письма, необходимый пакет JAR (пожалуйста, загрузите исходный файл Javamail, официальная страница загрузки: http://www.oracle.com/technetwork/java/javamail/index-138643.html):
mailapi.jar. Определяет интерфейс API, используемый для отправки и получения электронных писем;
Smtp.jar. Содержит класс, используемый для отправки электронных писем;
Pop3.jar. Включает класс, используемый для получения электронных писем;
Протокол, который мы обычно используем для отправки электронных писем, является протоколом SMTP, а протокол, который мы используем для принятия электронных писем, является протоколом POP3. Или мы напрямую добавляем Mail.jar в проект, который содержит все интерфейсы и классы для Java отправки и получения почты.
Обычно используемые классы:
Отправить электронное письмо
Ниже я сначала перечислим самый простой небольшой тестовый пример отправки электронных писем в Java:
импортировать java.util.properties; импортировать javax.mail.address; импортировать javax.mail.message; Импорт javax.mail.messagingException; импортировать javax.mail.session; импортировать javax.mail.transport; Импорт javax.mail.internet.internetDdress; Импорт javax.mail.internet.mimemessage; /** * * QQ (mail.qq.com): сервер POP3 (порт 995) SMTP -сервер (порт 465 или 587). * */ public class demo1 {/ ** * @param args * @throhs messagingexception */ public static void main (string [] args) бросает MessagingException {String sendUsername = "[email protected]"; String sendpassword = "pwd"; Свойства свойства = новые свойства (); Properties.SetProperty ("mail.smtp.auth", "true"); // Сервер должен аутентифицировать свойства. setperperty ("mail.transport.protocol", "smtp"); // Объявит порт, используемый для отправки сеанса электронной почты = session.getinstance (свойства); session.setdebug (true); // согласен распечатать информацию о разговоре с сервером на консоли сообщества текущего потока = New Mimemessage (Session); // Создание сообщения отправленного сообщения. Settext («Привет, я чемпион. transport.connect ("smtp.126.com", 25, sendusername, sendpassword); // Подключение сервера отправителя. }}Как правило, мы используем аутентификатор для инкапсуляции имени пользователя и пароля, что непрозрачна! так:
импортировать javax.mail.authenticator; импортировать javax.mail.message; Импорт javax.mail.messagingException; импортировать javax.mail.passwordAuthentication; импортировать javax.mail.session; импортировать javax.mail.transport; импортировать javax.mail.internet.address; Импорт javax.mail.internet.internetDdress; Импорт javax.mail.internet.mimemessage; Импорт junit.framework.testcase; /*** Javamail Отправить электронное письмо* @author Championship Wong* message.Addrecipient (message.recipient получатель, адрес адрес); Укажите роли получателя и получателя при отправке электронного письма* recement.recipienttype.te refence* message.recipienttype.cc cc, то есть скопируйте один человеку при отправке электронного письма, не отвечая! Тем не менее, получатель выше может видеть, кого вы скопировали на * message.recipienttype.bcc, тайно отправляет, а также отправить копию другому человеку при отправке электронного письма. Однако, в отличие от вышесказанного, получатель не может видеть, кого вы тайно дали * */ public Class Demo2 Extends testcase {Private Static Final String SendUsername = "[email protected]"; // Имя пользователя сервера, которое необходимо подключить, чтобы отправить по электронной почте Private SendPasd = "PWD"; "smtp"; // порт, используемый для отправки почты частной статической конечной строки sendhostaddress = "smtp.126.com"; // Адрес сервера, используемого для отправки Mail public void test () ThrowsException, MessagingException {Properties Properties = new Properties (); Properties.SetProperty ("mail.smtp.auth", "true"); // Сервер должен аутентифицировать свойства. Setrperty ("mail.transport.protocol", sendprotocol); // Объявит порт, используемый для отправки почт. Session.getInstance (свойства, new Authenticator () {Защищенный пароль, getPasswordAuthentication () {return new passwordAuthentication (sendUsername, sendpassword);}}); session.setdebug (true); // Распечатать информацию в режиме реального времени о отправке почты в фоночном сообщении Сообщение = New Mimemessage (Session); message.setfrom (new InternetAddress ("[email protected]")); message.setsubject ("demo2javacode Отправляя тест электронной почты, используя Authenticator"); // Установить тематическое сообщение.setRecipients (message.recipienttype.to, internetAddress .parse ("[email protected], [email protected]"); InternetAddress .parse ("[email protected]")); // cc Сообщение .SetContent ("<span style =" font-size: 20px; color: #ffccff "mce_style =" font-size: 20px; color: #ffcff "> если вы видите это, это обеспечивает, что тест был успешным! "text/html; charset = gbk"); Transport.send (сообщение); // Отправить электронную почту}} Мы отправляем относительно сложное электронное письмо, включая вложения, изображения и тексты:
Импорт java.io.filenotFoundException; Импорт java.io.fileOutputStream; импортировать java.io.ioexception; импортировать java.io.outputstream; импортировать java.util.properties; импортировать javax.activation.datahandler; импортировать javax.activation.datasource; импортировать javax.activation.filedatasource; импортировать javax.mail.authenticator; Импорт javax.mail.messagingException; импортировать javax.mail.passwordAuthentication; импортировать javax.mail.session; импортировать javax.mail.transport; импортировать javax.mail.message.recipienttype; Импорт javax.mail.internet.internetDdress; импортировать javax.mail.internet.mimebodypart; Импорт javax.mail.internet.mimemessage; Импорт javax.mail.internet.miMumultipart; импортировать javax.mail.internet.mimeutility; /** * * * @Author Администратор MR XP.Wang * MiMemultipart Общий контейнер электронной почты является многоуровневым, который определяет методы добавления и удаления различных частей электронной почты. * Тем не менее, это абстрактный класс, и его подкласс MiMemultipart должен использоваться для объекта Mimemessage* MimeBodyPart - это подкласс тела, специально используемый для Mimemessage. Объект MimeBodyPart представляет * каждую часть объекта MiMemultIpart * mimeUtility.encodeText (String CN) используется для решения проблемы китайского искаженного кода в информации заголовка в электронном письме * */ public class demo3_test {public Static void main (String [] args) throws exception {Properties vesties = new Protsties ();););););); Properties.SetProperty ("mail.smtp.auth", "true"); // Сервер должен аутентифицировать свойства. Session.getInstance (свойства, new Authenticator () {String sendUsername = "[email protected]"; string sendpassword = "pwd"; защищенная пароля с помощью getPasswordAuthentication () {return New PasswordAuthentication (SendUsername, SendPassword);}}); session.setdebug (true); Mimemessage msg = new mimemessage (session); // объявить тело электронной почты msg.setfrom (new InternetAddress ("/" "+mimeUtility.encodetext (" Mr xp.wang ")+"/"<[email protected]>")); msg.setsubject («Это мое первое сложное электронное письмо»); // Установить субъект электронной почты msg.setrecipients (mimemessage.recipienttype.to, internetAddress.parse (mimeutility.encodetext ("wang Xiangpan ")+" <[email protected]>, "+mimeutility.encodetext (" sanmao ")+" <[email protected]> ")); Mimemultipart msgmultipart = new MiMemultipart ("mixed"); // Укажите комбинированную связь электронной почты, смешанные отношения msg.setContent (msgmultipart); // Установить корпус электронной почты MimeBodyPart1 = New MimeBodyPart (); // Прикрепление 1 MimePart ATTACE2 = new MimeBodyPart () Attachment 2 MIMEPART 2 MIMEBODYPART (). Mimebodypart (); // Текст электронной почты, смесь (изображение + текст) // Установить вложение и текст в этот корпус электронной почты msgmultipart.adddybodypart (attch1); msgmultipart.addbodypart (attch2); msgmultipart.addbodypart (content); // Установите первый данные о прикреплении DS1 = New FileDataSource ("f: /accp5.0/file/ssh configuration.txt"); // указать источник данных прикрепленного Datahandler dh1 = new Datahandler (ds1); // Прикрепление прикрепления Attch1.setDataHandler (dh1); attch1.setfilename ("ssh.txt"); // Установить второй дат данных вложения DS2 = new FileDataSource ("resource/48.jpg"); // указать источник данных DataHandler DH2 = New DataHandler (DS2); // Информация о прикреплении ATTHAR2 // Установить текст электронной почты miMemultipart bodymultipart = new MiMemultipart ("связанный"); // Содержимое зависимости.setContent (bodyMultipart); // указать Body MimeBodyPart htmlpart = new MimeBodyPart (); Mimebodypart gifpart = new MimeBodyPart (); bodymultipart.addbodypart (htmlpart); BodyMultipart.AddBodyPart (GIFPART); DataSource gifds = new FileDataSource ("resource/48.jpg"); // Установить изображение текстового DataHandler gifdh = new DataHandler (Gifds); GIFPART.Setheader ("content-Location", "http://mimg.126.net/logo/126logo.gif"); GIFPART.SETDATAHANDLER (GIFDH); // Установите изображение текста htmlpart.setContent («Я только здесь, чтобы сделать соевый соус, это мое изображение фото! "text/html; charset = gbk"); // Установить текстовый msg.savechanges (); // Сохранить электронную почту // Сохранить электронное письмо в виде файла outputStream = new FileOutputStream ("c: /Users/Administrator/desktop/test.eml"); msg.writeto (ops); Ops.Close (); Transport.send (MSG); }} Получить электронные письма
Пример: Роуз собирает последнее электронное письмо.
Импорт java.util.date; import java.util.properties; импорт javax.mail.folder; импорт javax.mail.message; импорт javax.mail.messagingexception; импорт javax.mail.nosuchproviderexception; импорт javax.session; import javax.mail.store; main (string [] args) {string protocol = "pop3"; логический ISSSL = true; String host = "pop.163.com"; int port = 995; String username = "[email protected]"; String password = "rose"; Свойства реквизит = новые свойства (); props.put ("mail.pop3.ssl.enable", iSssl); props.put ("mail.pop3.host", хост); props.put ("mail.pop3.port", порт); Session Session = session.getDefaultInstance (ops); Store Store = NULL; Папка папка = null; try {store = session.getStore (протокол); Store.connect (имя пользователя, пароль); folder = store.getFolder ("inbox"); folder.open (folder.read_only); int size = folder.getMessageCount (); Сообщение сообщения = folder.getMessage (size); String from = message.getFrom () [0] .toString (); String subject = message.getSubject (); Дата дата = message.getSentDate (); System.out.println ("from:" + from); System.out.println ("Субъект:" + субъект); System.out.println ("Date:" + Date); } catch (nosuchproviderexception e) {e.printstacktrace (); } catch (messagingException e) {e.printstackTrace (); } наконец {try {if (folder! = null) {folder.close (false); } if (store! = null) {store.close (); }} catch (messagingException e) {e.printstacktrace (); }} System.out.println ("получен!"); }}