LXF97:Java EE
|
|
|
http://www.textervart.com Шаблон:Цикл/Java EE ÐаÑегоÑиÑ:УÑебники
ÐоÑÑовÑй ÑеÑвиÑ
СкаÑаÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñй код пÑимеÑа
- ЧÐСТЬ 9 ХоÑиÑе оÑнаÑÑиÑÑ ÑÐ²Ð¾Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑÑ Ð¿Ð¸ÑаÑÑ Â«Ð½Ð° деÑÐµÐ²Ð½Ñ Ð´ÐµÐ´ÑÑке»? ÐлекÑÐ°Ð½Ð´Ñ Ðабаев Ð·Ð½Ð°ÐµÑ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑее ÑÑедÑÑво.
ÐеÑмоÑÑÑ Ð½Ð° заÑилÑе бÑаÑзеÑа в ÑеÑии, JEE им не огÑаниÑиваеÑÑÑ. ÐавайÑе попÑобÑем поÑÑлаÑÑ Ð¿Ð¸ÑÑма из Java (Ð²ÐµÐ´Ñ ÐºÐ°Ð¶Ð´Ð°Ñ Ñ
оÑоÑÐ°Ñ Ð¿ÑогÑамма должна ÑмеÑÑ ÑообÑаÑÑ ÑазÑабоÑÑикам об оÑибкаÑ
), и Ñделаем ÑÑо пÑиложение не бÑаÑзеÑнÑм, а «обÑÑнÑм».
ÐоÑоÑко о поÑÑе
ЧÑÐ¾Ð±Ñ ÑабоÑаÑÑ Ñ Ð¿Ð¾ÑÑой, нÑжно ÑмеÑÑ ÐµÑ Ð¾ÑпÑавлÑÑÑ Ð¸ полÑÑаÑÑ. ÐÑи попÑÑке ÑазобÑаÑÑÑÑ Ð² ÑÑом Ð²Ñ Ð½Ð°ÑкнеÑеÑÑ Ð½Ð° ÑледÑÑÑие бÑквоÑоÑеÑÐ°Ð½Ð¸Ñ (Ñ ÑазнÑми ваÑиаÑиÑми): SMTP, POP, IMAP. РаÑÑмоÑÑим кÑаÑко, ÑÑо ÑÑо Ñакое и как ÑÑим полÑзоваÑÑÑÑ (а Ñакже где поÑиÑаÑÑ Ð¿Ð¾Ð¿Ð¾Ð´Ñобнее).
- SMTP
ÐÑи помоÑи Simple Mail Transfer Protocol (пÑоÑÑого пÑоÑокола пеÑедаÑи поÑÑÑ) поÑÑа пеÑедаеÑÑÑ Ñ ÐºÐ»Ð¸ÐµÐ½Ñа на ÑеÑвеÑ. ÐÑпÑавлÑеÑÑÑ Ñо еÑÑÑ. ÐÑоÑокол ÑекÑÑовÑй, и еÑли еÑÑÑ Ð¶ÐµÐ»Ð°Ð½Ð¸Ðµ, можно оÑпÑавлÑÑÑ Ð¿Ð¸ÑÑма пÑÑмо из telnetâа.
- POP
Тоже ÑекÑÑовÑй пÑоÑокол, но Ñже не Ð´Ð»Ñ Ð¿ÐµÑедаÑи, а Ð´Ð»Ñ Ð¿Ñиема ÑообÑений. ÐÐ¾Ð¶ÐµÑ Ð²ÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¿Ð¾ поÑÑÐ¾Ð²Ð¾Ð¼Ñ ÑÑÐ¸ÐºÑ (ÑколÑко ÑообÑений, какой Ð¸Ñ ÑазмеÑ), загÑÑзиÑÑ ÑообÑение по номеÑÑ Ð¸ Ñак далее.
- IMAP
POP пÑедполагаеÑ, ÑÑо поÑÑа ÑкаÑиваеÑÑÑ Ð½Ð° ÐºÐ»Ð¸ÐµÐ½Ñ Ð¸ Ñам Ñже ÑаÑкладÑваеÑÑÑ Ð¿Ð¾ папкам, обÑабаÑÑваеÑÑÑ, гÑÑппиÑÑеÑÑÑ. ÐÑи ÑÑом Ñ ÑеÑвеÑа ÑообÑÐµÐ½Ð¸Ñ ÑÑиÑаÑÑÑÑ. ÐÑо не вÑегда Ñдобно. Ðак Ñаз Ð´Ð»Ñ Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑÑ Ð½Ð° ÑеÑвеÑе Ñоздан пÑоÑокол IMAP. Ðак и пÑедÑдÑÑие два, он ÑекÑÑовÑй. Ðо Ñ ÐµÐ³Ð¾ помоÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ не ÑолÑко полÑÑиÑÑ ÑообÑениÑ, но и ÑоздаÑÑ Ð½Ð° ÑеÑвеÑе папкÑ, пеÑемеÑÑиÑÑ Ð¿Ð¸ÑÑмо кÑда-нибÑдÑ, подпиÑаÑÑÑÑ Ð½Ð° полÑÑение изменений (новÑÑ Ð¿Ð¸Ñем) в папке, и Ñак далее.
- GoogleMail/HotMail/â¦
Ðо и ÑÑо не вÑÑ. ÐÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¿ÑоÑоколами, но некоÑоÑÑе ÑеÑвиÑÑ ÑабоÑаÑÑ Â«Ð¿Ð¾-ÑвоемÑ». РеÑли GoogleMail пÑедоÑÑавлÑÐµÑ POP-инÑеÑÑейÑ, Ñо Hotmail, напÑимеÑ, неÑ. Ð Ñаком ÑлÑÑае обÑÑно еÑÑÑ ÐºÐ°ÐºÐ¾Ð¹-Ñо Ñвой, неÑÑандаÑÑнÑй пÑоÑокол.
ÐÑого
РиÑоге полÑÑаеÑÑÑ, ÑÑо ÑазнÑÑ Ð¿ÑоÑоколов много-много (ÑÑо не ÑÑиÑÐ°Ñ Ð²Ð°ÑианÑов и нÑанÑов, комбинаÑий коÑоÑÑÑ ÑоÑни). Ð ÑÑÐ¾Ð±Ñ Ð¿Ð¾-ÑеловеÑеÑки вÑе ÑÑо обÑабаÑÑваÑÑ, пÑиÑлоÑÑ Ð¿Ð¸ÑаÑÑ Ð±Ñ Ð¾Ð³Ñомное колиÑеÑÑво кода. РпоÑом его оÑлаживаÑÑ⦠ÐоÑÑÐ¾Ð¼Ñ Ð¾Ð±ÑÑно, ÑаÑÑмаÑÑÐ¸Ð²Ð°Ñ ÑеÑевÑе пÑиложениÑ, оÑпÑавкÑ/полÑÑение пиÑем Ð¾Ð±Ñ Ð¾Ð´ÑÑ ÑÑоÑоной. ÐейÑÑвиÑелÑно, заÑем? ÐÐ¾Ð¼Ñ Ð½Ñжно, и Ñак ÑазбеÑеÑÑÑ.
Ðо в Java, как вÑегда, Ñже позабоÑилиÑÑ Ð¾ Ñом, ÑÑÐ¾Ð±Ñ ÑпÑоÑÑиÑÑ Ð¶Ð¸Ð·Ð½Ñ ÑеловекÑ, коÑоÑÐ¾Ð¼Ñ Ð½Ñжно ÑаÑÑÑлаÑÑ Ð¿Ð¸ÑÑма â позабоÑилиÑÑ Ð½Ð° Ñамом вÑÑÑем ÑÑовне (в Sun Microsystems) и доÑÑаÑоÑно каÑеÑÑвенно.
Ргде волÑÐµÐ±Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°?
ÐÑÑÑ ÑÐ°ÐºÐ°Ñ Ð·Ð°Ð¼ÐµÑаÑелÑÐ½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека, JavaMail. Ðна доÑÑаÑоÑно кÑÑÐ¿Ð½Ð°Ñ (224 килобайÑа ÑолÑко JAR-Ñайл), заÑо и ÑÐ¼ÐµÐµÑ Ð¾ÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾. Ð Ñего не ÑÐ¼ÐµÐµÑ â можно наÑÑиÑÑ, благо аÑÑ Ð¸ÑекÑÑÑа наÑÑÑаиваемаÑ. ÐавайÑе поÑмоÑÑим, как Ñ Ð½ÐµÐ¹ ÑабоÑаÑÑ.
ÐодгоÑовка
ÐÐ»Ñ Ð½Ð°Ñала ÑкаÑаем ÑÐ°Ð¼Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑекÑ. СÑÑаниÑка пÑодÑкÑа Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð¿Ð¾ адÑеÑÑ http://java.sun.com/products/javamail/; ÑкаÑиваÑÑ Ð½Ñжно, как водиÑÑÑ, поÑледний Ñелиз (1.4). Также понадобиÑÑÑ JavaBeans Activation Framework (JAF), коÑоÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ загÑÑзиÑÑ Ñо ÑÑÑаниÑки ÑÑдом: http://java.sun.com/products/javabeans/jaf/index.jsp.
ÐоÑле загÑÑзки и ÑазаÑÑ Ð¸Ð²Ð¸ÑованиÑ, полÑÑаем две библиоÑеки: mail.jar и activation.jar. ÐеÑÐ²Ð°Ñ Ð¸Ð· Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð²Ñе возможнÑе пÑоÑоколÑ, поÑÑÐ¾Ð¼Ñ ÑÐ°Ð·Ð¼ÐµÑ Ð¸Ð¼ÐµÐµÑ Ð´Ð¾ÑÑаÑоÑно внÑÑиÑелÑнÑй. ÐÑли ÑÑо-Ñо из ÑÑого многообÑÐ°Ð·Ð¸Ñ Ð²Ð°Ð¼ не нÑжно, можно воÑполÑзоваÑÑÑÑ ÑÑезаннÑми веÑÑиÑми, они Ñакже ÑодеÑжаÑÑÑ Ð² mail.jar.
Создадим каÑалог Ð´Ð»Ñ Ð¿ÑоекÑа (QuickMailer), в нем заведем подкаÑалог libs и положим ÑÑда ÑÑи два jar-Ñайла. ÐоÑом заведем дÑÑгой подкаÑалог (src), Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи иÑÑ Ð¾Ð´Ð½ÑÑ ÑекÑÑов.
ÐкоÑки
Сделаем окоÑко Ð´Ð»Ñ Ð¾ÑпÑавки ÑообÑениÑ. Ðно бÑÐ´ÐµÑ Ð¿ÑоÑÑое, как на ÑиÑ. 1. РиÑ. 1. Ðкно ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸ оÑпÑавки ÑообÑений.
ÐодÑобно ÑаÑÑказаÑÑ Ð¿Ñо Ñо, как ÑоздаÑÑÑÑ ÑоÑмÑ, не Ñ Ð²Ð°ÑÐ¸Ñ Ð¼ÐµÑÑа. Ðо пÑивеÑÑи код, ÑоздаÑÑий Ñакое окоÑко â запÑоÑÑо.
import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class QuickMailerForm extends JFrame { private JTextField _fieldTo; private JTextField _fieldSubject; private JEditorPane _message; private JButton _buttonSend; public QuickMailerForm() throws HeadlessException { setTitle(âÐÑÑÑÑо ÐÑйлеÑâ); setDefaultCloseOperation(EXIT_ON_CLOSE); createLayout(); createActions(); pack(); setSize(700, 560); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); setLocation((int) (screenSize.getWidth() - 700)/2, (int) ((screenSize.getHeight() - 560)/2)); } }
Ðак видно, клаÑÑ Ð½Ð°ÑледÑеÑÑÑ Ð¾Ñ JFrame, ÑÑо окно пÑиложениÑ. ÐмееÑÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑоÑ, где Ð¾ÐºÐ½Ñ Ð¿ÑиÑваиваеÑÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº, ÑÑÑанавливаеÑÑÑ ÑÐ°Ð·Ð¼ÐµÑ Ð¸ положение в ÑеÑедине ÑкÑана. Также еÑÑÑ Ð´Ð²Ðµ ÑÑнкÑии: пеÑÐ²Ð°Ñ ÑÐ¾Ð·Ð´Ð°ÐµÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÑ (createLayout), вÑоÑÐ°Ñ Â«Ð²ÐµÑаеÑ» на ÐºÐ½Ð¾Ð¿ÐºÑ ÐÑпÑавиÑÑ Ð¾Ð±ÑабоÑÑик ÑобÑÑиÑ, коÑоÑÑй ÑобиÑÐ°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¸ вÑзÑÐ²Ð°ÐµÑ Ð¼ÐµÑод оÑпÑавки поÑÑÑ.
ÐÐ¾Ñ ÐºÐ°Ðº ÑоздаÑÑÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÑ ÑоÑмÑ:
private void createLayout() { JPanel labelsPanel = new JPanel(new GridLayout(2, 1)); labelsPanel.add(new JLabel(âEMail полÑÑаÑелÑ:â, JLabel.RIGHT)); labelsPanel.add(new JLabel(âТема пиÑÑма:â, JLabel.RIGHT)); JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); _buttonSend = new JButton(âÐÑпÑавиÑÑâ); buttonsPanel.add(_buttonSend); JPanel fieldsPanel = new JPanel(new GridLayout(2, 1)); _fieldTo = new JTextField(); _fieldSubject = new JTextField(); fieldsPanel.add(_fieldTo); fieldsPanel.add(_fieldSubject); JPanel controlsPanel = new JPanel(new BorderLayout(5, 5)); controlsPanel.add(labelsPanel, BorderLayout.WEST); controlsPanel.add(fieldsPanel, BorderLayout.CENTER); JPanel mainPanel = new JPanel(new BorderLayout(5, 5)); _message = new JEditorPane(âtext/rtfâ, ââ); mainPanel.add(controlsPanel, BorderLayout.NORTH); mainPanel.add(new JScrollPane(_message), BorderLayout.CENTER); mainPanel.add(buttonsPanel, BorderLayout.SOUTH); mainPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(mainPanel); }
ÐкÑаÑÑе, здеÑÑ ÑоздаеÑÑÑ Ð½ÐµÑколÑко панелей, вложеннÑÑ Ð´ÑÑг в дÑÑга. ЧÑÐ¾Ð±Ñ Ð²ÑглÑдело полÑÑÑе, задаÑÑÑÑ Ð¾ÑÑÑÑÐ¿Ñ Ð¸ межкомпоненÑнÑе ÑаÑÑÑоÑниÑ.
ÐоÑледний меÑод â Ñоздание обÑабоÑÑика ÑобÑÑÐ¸Ñ Ð½Ð°Ð¶Ð°ÑÐ¸Ñ Ð½Ð° кнопкÑ:
private void createActions() { _buttonSend.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { QuickMailer.sendMessage(âalex@jdnevnik.comâ, _fieldTo.getText(), _fieldSubject.getText(), _message.getDocument().getText(0, _message.getDocument().getLength())); } catch (Exception e1) { e1.printStackTrace(); } } }); }
ТÑÑ Ð²Ñе доÑÑаÑоÑно пÑоÑÑо. ÐÑÑаÑкиваÑÑÑÑ Ð¿Ð°ÑамеÑÑÑ Ð¿Ð¸ÑÑма из полей, поÑле Ñего вÑзÑваеÑÑÑ Ð½ÐµÐºÐ¸Ð¹ меÑод sendMessage, коÑоÑÑй Ð¼Ñ ÑейÑÐ°Ñ Ð¸ ÑаÑÑмоÑÑим подÑобнее.
СобÑÑвенно оÑпÑавка ÑообÑениÑ
ÐÑедполагаеÑÑÑ, ÑÑо Ñ Ð²Ð°Ñ Ð½Ð° localhostâе наÑÑÑоен smtp-ÑеÑÐ²ÐµÑ (Ñ Ð¼ÐµÐ½Ñ ÑÑÐ¾Ð¸Ñ postfix), либо еÑÑÑ Ð´Ð¾ÑÑÑп к какомÑ-Ñо дÑÑÐ³Ð¾Ð¼Ñ (коÑоÑÑй не ÑÑебÑÐµÑ Ð°Ð²ÑоÑизаÑии: Ñ Ð½ÐµÐ¹ ÑазбиÑаÑÑÑÑ Ð¿Ð¾ÐºÐ° не бÑдем).
ÐÐ»Ñ Ð½Ð°Ñала Ñоздадим адÑеÑа оÑпÑавиÑÐµÐ»Ñ Ð¸ полÑÑаÑелÑ:
public static void sendMessage(String aFrom, String aTo, String aSubject, String aMessageText) throws Exception { InternetAddress from = new InternetAddress(aFrom, âFromâ); InternetAddress to = new InternetAddress(aTo, âToâ);
ТепеÑÑ Ð½Ñжно наÑÑÑоиÑÑ Ñак назÑваемÑй ÑÑанÑпоÑÑ, коÑоÑÑй бÑÐ´ÐµÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑÑÑ Ð¾ÑпÑавкой ÑообÑениÑ.
Properties props = new Properties(); props.put(âmail.transport.protocolâ, âsmtpâ); props.put(âmail.smtp.hostâ, âlocalhostâ); props.put(âmail.smtp.portâ, â25â); Session session = Session.getDefaultInstance(props); Transport transport = session.getTransport();
ТепеÑÑ â Ñоздадим Ñамо ÑообÑение.
MimeMessage message = new MimeMessage(session); message.setFrom(from); message.setRecipient(Message.RecipientType.TO, to); message.setSubject(aSubject, âutf-8â); message.setContent(aMessageText, âtext/plain; charset=utf-8â);
Ð, наконеÑ, оÑоÑлем пиÑÑмо.
transport.connect(); transport.sendMessage(message, new Address[]{to}); transport.close(); }
Ðак можно замеÑиÑÑ, вÑе пÑеделÑно пÑоÑÑо и понÑÑно â но иÑклÑÑиÑелÑно поÑомÑ, ÑÑо Ñам пÑÐ¸Ð¼ÐµÑ Ð¿ÑоÑÑой. СиÑÑема доÑÑаÑоÑно моÑнаÑ, ÑÑÐ¾Ð±Ñ ÑпÑавиÑÑÑÑ Ð¸ Ñ Ð°Ð²ÑоÑизаÑией, и Ñ ÑообÑениÑми на ÑазнÑÑ ÑзÑÐºÐ°Ñ , и Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñми Ñайлов.
СобиÑаем вÑе вмеÑÑе
ÐÑÑалоÑÑ ÑолÑко напиÑаÑÑ Ð¼ÐµÑод, коÑоÑÑй бÑÐ´ÐµÑ Ð²Ñе ÑÑо запÑÑкаÑÑ.
public static void main(String[] args) { QuickMailerForm form = new QuickMailerForm(); form.setVisible(true); }
У Ð¼ÐµÐ½Ñ Ð¿Ð¾Ñле напиÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð° полÑÑилоÑÑ Ð´Ð²Ð° Ñайла, QuickMailer.java и QuickMailerForm.java. СкомпилиÑÑем Ð¸Ñ (вÑполнив, Ð½Ð°Ñ Ð¾Ð´ÑÑÑ Ð² каÑалоге, в коÑоÑом Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ src и libs):
javac -cp libs/activation.jar:libs/commons-email-1.0.jar:libs/mail.jar -encoding utf-8 -d out src/*.java
ÐбÑаÑиÑе внимание на ÑаÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð¾Ñле -cp. ÐÑо Ñказание компилÑÑоÑÑ, где иÑкаÑÑ Ð¸ÑполÑзÑемÑе в коде клаÑÑÑ, кÑоме ÑÑандаÑÑнÑÑ . ЧаÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð¾Ñле -d опÑеделÑÐµÑ ÐºÐ°Ñалог, кÑда бÑдÑÑ ÑкладÑваÑÑÑÑ ÑкомпилиÑованнÑе клаÑÑÑ. Ð, наконеÑ, Ñак как Ð¼Ñ Ñоздавали ÑÐ°Ð¹Ð»Ñ Ð² кодиÑовке UTF-8 (в ней пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ñе ÑекÑÑÑ Ð½Ð° диÑке), Ñо и в командной ÑÑÑоке ÑÑо нÑжно ÑказаÑÑ, инаÑе бÑÐ´ÐµÑ Ð²ÑбÑана кодиÑовка по ÑмолÑаниÑ, а ÑÑо не вÑегда веÑно.
ÐапÑÑÑим:
cd out java -cp .:../libs/activation.jar:../libs/commons-email-1.0.jar:../libs/mail.jar QuickMailer
Ðожно оÑпÑавлÑÑÑ Ð¿Ð¸ÑÑма.
РполÑÑиÑÑ?
Ðа новое окоÑко меÑÑа Ñже не Ñ Ð²Ð°ÑиÑ. ÐгÑаниÑимÑÑ Ð¿ÑоÑмоÑÑом кода, коÑоÑÑй нÑжно напиÑаÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð¿Ð¸ÑÑмо, напÑимеÑ, по пÑоÑÐ¾ÐºÐ¾Ð»Ñ POP.
Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore(âpop3â); store.connect(aHost, aUserName, aPassword); Folder folder = store.getFolder(âINBOXâ); folder.open(Folder.READ_ONLY); Message message[] = folder.getMessages(); for (int i = 0, n = message.length; i < n; i++) { System.out.println(i + â: â + message[i].getFrom()[0] + â\tâ + message[i]. getSubject()); } folder.close(false); store.close();
ÐаннÑй кÑÑок кода пÑоÑÑо вÑÐ²ÐµÐ´ÐµÑ ÑпиÑок вÑÐµÑ Ð¿Ð¸Ñем на ÑеÑвеÑе.
ÐÑ, а еÑли не мÑдÑиÑÑâ¦
ÐÑÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð¸ попÑоÑе. ÐÑли пÑогÑамма ÑабоÑÐ°ÐµÑ Ñ Ð¿Ð¾ÑÑой акÑивно, можно иÑполÑзоваÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ Ð½Ð°ÑÐ¸Ñ Ð¿Ð¾ÑÑоÑннÑÑ Ð´ÑÑзей из apache-commons. ÐазÑваеÑÑÑ Ð¾Ð½Ð° commons-email, и ее ÑÑÑаниÑка ÑаÑполагаеÑÑÑ Ð¿Ð¾ адÑеÑÑ http://commons.apache.org/email/. СкаÑав библиоÑекÑ, положим ÐµÑ Ð² libs, к mail.jar и компании. ТепеÑÑ Ð¿Ð¾Ð¿ÑобÑем оÑпÑавиÑÑ Ð¿Ð¸ÑÑмо Ñ ÐµÐµ помоÑÑÑ:
public static void sendMessageCommonsEMail(String aFrom, String aTo, String aSubject, String aMessageText) throws EmailException { SimpleEmail email = new SimpleEmail(); email.setHostName(âlocalhostâ); email.setFrom(aFrom, âFromâ); email.addTo(aTo, âToâ); email.setSubject(aSubject); email.setMsg(aMessageText); email.send(); }
ÐаÑколÑко вÑе пÑоÑе и понÑÑнее ÑÑÐ°Ð·Ñ ÑÑало! РеÑли нÑжно Ñайл пÑиложиÑÑ? Ðа пожалÑйÑÑа:
public static void sendMessageWithAttachment(String aFrom, String aTo, String aSubject, String aMessageText) throws EmailException { EmailAttachment attachment = new EmailAttachment(); attachment.setPath(âattachments/attachment.zipâ); attachment.setDisposition(EmailAttachment.ATTACHMENT); attachment.setDescription(âФайл-пÑиложение к пиÑÑмÑâ); attachment.setName(âattachment.zipâ); MultiPartEmail email = new MultiPartEmail(); email.setHostName(âlocalhostâ); email.setFrom(aFrom, âFromâ); email.addTo(aTo, âToâ); email.setSubject(aSubject); email.setMsg(aMessageText); email.attach(attachment); email.send(); }
ÐдеÑÑ Ñоже ниÑего Ñложного неÑ. СоздаÑÑ Ð¿Ñиложение в пиÑÑме можно и иÑполÑзÑÑ ÑолÑко JavaMail, но Ñам ÑÑо полÑÑаеÑÑÑ Ð´Ð¾ÑÑаÑоÑно непÑоÑÑо, и длиннее Ñаза в ÑÑи-ÑеÑÑÑе.
ÐÑо Ñпам
ÐонеÑно, ÑабоÑа Ñ Ð¿Ð¾ÑÑой не Ñак пÑоÑÑа, как ÑÑо оÑÑажено в ÑÑаÑÑе. ÐÑÑÑ Ð¸ пÑоблема Ñпама (а Ð´Ð»Ñ Ð¿ÑогÑаммно оÑпÑавлÑемÑÑ ÑообÑений â пÑоблема Ñого, ÑÑо оно Ñ Ð±Ð¾Ð»ÑÑой веÑоÑÑноÑÑÑÑ Ð¿Ð¾ÑÑиÑаеÑÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ Ñпамом), и пÑоблема коÑÑекÑноÑÑи. SMTP-пÑоÑокол, в ÑаÑÑноÑÑи, доÑÑаÑоÑно ÑÑаÑÑй, и Ñам много неÑоÑноÑÑей, неÑвнÑÑ Ð¿Ñавил и Ñак далее. РобÑем, Ñо, ÑÑо еÑÑÑ JavaMail â ÑÑо оÑлиÑно, и она оÑÐµÐ½Ñ ÑилÑно Ð¿Ð¾Ð¼Ð¾Ð³Ð°ÐµÑ Ð¿Ñи ÑабоÑе Ñ Ð¿Ð¾ÑÑовÑми ÑообÑениÑми, но панаÑеей Ñем не менее не ÑвлÑеÑÑÑ. ÐÑе Ñавно нÑжно пÑедÑÑавлÑÑÑ Ñебе, как ÑабоÑÐ°ÐµÑ Ð¿ÑоÑокол, какие заголовки нÑжно ÑÑавиÑÑ, как обÑабаÑÑваÑÑ ÑообÑÐµÐ½Ð¸Ñ ÑазнÑе поÑÑовÑе клиенÑÑ (ÑÑÐ¾Ð±Ñ Ð¿Ð¸ÑÑмо ноÑмалÑно Ñам показÑвалоÑÑ, а не кÑÑкозÑбÑами) и много Ñего еÑе.
Ðо вÑе же, надеÑÑÑ, ÑепеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ не боÑÑÑÑÑ ÑÑÑаÑнÑÑ Ð±ÑквеннÑÑ ÑоÑеÑаний, ÑвÑзаннÑÑ Ñ Ð¿Ð¾ÑÑой, и Ñпокойно вÑÑÑаиваÑÑ Ð² пÑоÑÐ°Ð¼Ð¼Ñ ÐµÑе одно ÑдобнейÑее ÑÑедÑÑво коммÑникаÑии: ÑлекÑÑоннÑе пиÑÑма. LXF