java发邮件接口(怎样用java实现邮件的发送)
本文目录
- 怎样用java实现邮件的发送
- java中如何实现公司邮箱发送邮件配置
- java 发送邮件
- 如何用java实现发邮件功能,并有几点注意事项
- java 怎么实现发送邮件例子
- 怎么用java发送邮件,像园子那样
- 如何在 java 发邮件中提供链接
- 怎样用java发送邮件
怎样用java实现邮件的发送
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.SocketException;import java.rmi.UnknownHostException;import java.util.StringTokenizer;import sun.misc.BASE64Encoder;public class Sender { //private boolean debug = true; BASE64Encoder encode=new BASE64Encoder();//用于加密后发送用户名和密码 static int dk=25;private Socket socket; public Sender(String server, int port) throws UnknownHostException, IOException { try { socket = new Socket(server, dk); } catch (SocketException e) { System.out.println(e.getMessage()); } catch (Exception e) { e.printStackTrace(); } finally { //System.out.println(“已经建立连接!“); } } // 注册到邮件服务器 public void helo(String server, BufferedReader in, BufferedWriter out) throws IOException { int result; result = getResult(in); // 连接上邮件服务后,服务器给出220应答 if (result != 220) { throw new IOException(“连接服务器失败“); } result = sendServer(“HELO “ + server, in, out); // HELO命令成功后返回250 if (result != 250) { throw new IOException(“注册邮件服务器失败!“); } } private int sendServer(String str, BufferedReader in, BufferedWriter out) throws IOException { out.write(str); out.newLine(); out.flush(); /* if (debug) { System.out.println(“已发送命令:“ + str); } */ return getResult(in); } public int getResult(BufferedReader in) { String line = ““; try { line = in.readLine(); /* if (debug) { System.out.println(“服务器返回状态:“ + line); } */ } catch (Exception e) { e.printStackTrace(); } // 从服务器返回消息中读出状态码,将其转换成整数返回 StringTokenizer st = new StringTokenizer(line, “ “); return Integer.parseInt(st.nextToken()); } public void authLogin(MailMessage message, BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer(“AUTH LOGIN“, in, out); if (result != 334) { throw new IOException(“用户验证失败!“); } result=sendServer(encode.encode(message.getUser().getBytes()),in,out); //System.out.println(“用户名: “+encode.encode(message.getUser().getBytes())); if (result != 334) { throw new IOException(“用户名错误!“); } result=sendServer(encode.encode(message.getPassword().getBytes()),in,out); //result=sendServer(message.getPassword(),in,out); //System.out.println(“密码: “+encode.encode(message.getPassword().getBytes())); if (result != 235) { throw new IOException(“验证失败!“); } } // 开始发送消息,邮件源地址 public void mailfrom(String source, BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer(“MAIL FROM:《“ + source + “》“, in, out); if (result != 250) { throw new IOException(“指定源地址错误“); } } // 设置邮件收件人 public void rcpt(String touchman, BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer(“RCPT TO:《“ + touchman + “》“, in, out); if (result != 250) { throw new IOException(“指定目的地址错误!“); } } // 邮件体 public void data(String from, String to, String subject, String content, BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer(“DATA“, in, out); // 输入DATA回车后,若收到354应答后,继续输入邮件内容 if (result != 354) { throw new IOException(“不能发送数据“); } out.write(“From: “ + from); out.newLine(); out.write(“To: “ + to); out.newLine(); out.write(“Subject: “ + subject); out.newLine(); out.newLine(); out.write(content); out.newLine(); // 句号加回车结束邮件内容输入 result = sendServer(“.“, in, out); //System.out.println(result); if (result != 250) { throw new IOException(“发送数据错误“); } } // 退出 public void quit(BufferedReader in, BufferedWriter out) throws IOException { int result; result = sendServer(“QUIT“, in, out); if (result != 221) { throw new IOException(“未能正确退出“); } } // 发送邮件主程序 public boolean sendMail(MailMessage message, String server) { try { BufferedReader in = new BufferedReader(new InputStreamReader( socket.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); helo(server, in, out);// HELO命令 authLogin(message, in, out);// AUTH LOGIN命令 mailfrom(message.getFrom(), in, out);// MAIL FROM rcpt(message.getTo(), in, out);// RCPT data(message.getDatafrom(), message.getDatato(), message.getSubject(), message.getContent(), in, out);// DATA quit(in, out);// QUIT } catch (Exception e) { e.printStackTrace(); return false; } return true; }}再写一个MailMessage.java,set/get方法即可。
java中如何实现公司邮箱发送邮件配置
Java中可以通过Javamail API实现公司邮箱邮件发送配置,Java mail是利用现有的邮箱账户发送邮件的工具,具体步骤如如下:1、通过JavamailAPI设置发送者邮箱用户名及密码2、通过JavamailAPI设置邮件主题、邮件内容、附件及邮件发送时间3、通过JavamailAPI设置发送者邮箱地址及接收者邮箱地址,接收者地址可以是多个及抄送4、邮件的需基本元素都设置完毕后,即可通过Javamail API的发送接口执行发送操作。
java 发送邮件
要两个java文件 还有一个mail.jar是不是只能用javamail谁也不敢说 第一个:public class Constant { public static final String mailAddress =“用户名@163.com“; public static final String mailCount =“用户名“; public static final String mailPassword =“密码“; public static final String mailServer =“smtp.163.com“; //pukeyouxintest, } 第二个:import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendMail { /** * 发送简单邮件 * @param str_from:发件人地址 * @param str_to:收件人地址 * @param str_title:邮件标题 * @param str_content:邮件正文 */ public static void send(String str_from,String str_to,String str_title,String str_content) { // str_content=“《a href=’www.163.com’》html元素《/a》“; //for testing send html mail! try { //建立邮件会话 Properties props=new Properties(); //用来在一个文件中存储键-值对的,其中键和值是用等号分隔的, //存储发送邮件服务器的信息 props.put(“mail.smtp.host“,Constant.mailServer); //同时通过验证 props.put(“mail.smtp.auth“,“true“); //根据属性新建一个邮件会话 Session s=Session.getInstance(props); s.setDebug(true); //有他会打印一些调试信息。 //由邮件会话新建一个消息对象 MimeMessage message=new MimeMessage(s); //设置邮件 InternetAddress from= new InternetAddress(str_from); //pukeyouxintest2@163.com message.setFrom(from); //设置发件人的地址 // // //设置收件人,并设置其接收类型为TO InternetAddress to=new InternetAddress(str_to); //pukeyouxintest3@163.com message.setRecipient(Message.RecipientType.TO, to); //设置标题 message.setSubject(str_title); //java学习 //设置信件内容 // message.setText(str_content); //发送文本邮件 //你好吗? message.setContent(str_content, “text/html;charset=gbk“); //发送HTML邮件 //《b》你好《/b》《br》《p》大家好《/p》 //设置发信时间 message.setSentDate(new Date()); //存储邮件信息 message.saveChanges(); //发送邮件 Transport transport=s.getTransport(“smtp“); //以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码 transport.connect(Constant.mailServer,Constant.mailCount,Constant.mailPassword); //发送邮件,其中第二个参数是所有已设好的收件人地址 transport.sendMessage(message,message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String args) { //测试用的,你吧你想写的内容写上去就行 send(Constant.mailAddress,“收件人邮箱“,“标题“,“《b》内容《/b》“); } } 然后把mail.jar导入,就可以了,我用的是163 的,其他的吧相应的服务器改一下就行了
如何用java实现发邮件功能,并有几点注意事项
package com.victor;import java.io.File;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Multipart;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;public class JavaMailWithAttachment { private MimeMessage message; private Session session; private Transport transport; private String mailHost = ““; private String sender_username = ““; private String sender_password = ““; private Properties properties = new Properties(); /* * 初始化方法 */ public JavaMailWithAttachment(boolean debug) { InputStream in = JavaMailWithAttachment.class.getResourceAsStream(“/MailServer.properties“); try { properties.load(in); this.mailHost = properties.getProperty(“mail.smtp.host“); this.sender_username = properties.getProperty(“mail.sender.username“); this.sender_password = properties.getProperty(“mail.sender.password“); } catch (IOException e) { e.printStackTrace(); } session = Session.getInstance(properties); session.setDebug(debug);//开启后有调试信息 message = new MimeMessage(session); } /** * 发送邮件 * * @param subject * 邮件主题 * @param sendHtml * 邮件内容 * @param receiveUser * 收件人地址 * @param attachment * 附件 */ public void doSendHtmlEmail(String subject, String sendHtml, String receiveUser, File attachment) { try { // 发件人 InternetAddress from = new InternetAddress(sender_username); message.setFrom(from); // 收件人 InternetAddress to = new InternetAddress(receiveUser); message.setRecipient(Message.RecipientType.TO, to); // 邮件主题 message.setSubject(subject); // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); // 添加邮件正文 BodyPart contentPart = new MimeBodyPart(); contentPart.setContent(sendHtml, “text/html;charset=UTF-8“); multipart.addBodyPart(contentPart); // 添加附件的内容 if (attachment != null) { BodyPart attachmentBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(attachment); attachmentBodyPart.setDataHandler(new DataHandler(source)); // 网上流传的解决文件名乱码的方法,其实用MimeUtility.encodeWord就可以很方便的搞定 // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码 //sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); //messageBodyPart.setFileName(“=?GBK?B?“ + enc.encode(attachment.getName().getBytes()) + “?=“); //MimeUtility.encodeWord可以避免文件名乱码 attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName())); multipart.addBodyPart(attachmentBodyPart); } // 将multipart对象放到message中 message.setContent(multipart); // 保存邮件 message.saveChanges(); transport = session.getTransport(“smtp“); // smtp验证,就是你用来发邮件的邮箱用户名密码 transport.connect(mailHost, sender_username, sender_password); // 发送 transport.sendMessage(message, message.getAllRecipients()); System.out.println(“send success!“); } catch (Exception e) { e.printStackTrace(); } finally { if (transport != null) { try { transport.close(); } catch (MessagingException e) { e.printStackTrace(); } } } } public static void main(String args) { JavaMailWithAttachment se = new JavaMailWithAttachment(true); System.out.println(se); File affix = new File(“E:\\测试-test.txt“); // File affix =null; se.doSendHtmlEmail(“##“, “###“, “####@##.com“, affix);// }}
注意点:1 jar可能有冲突,如果是demo可以直接应用mail.jar
如果是一个工程则要替换javaEE中的mail.jar包
2 关于properties配置文件的地址问题
Class.getResourceAsStream(String path) : path 不以’/’开头时默认是从此类所在的包下取资源,以’/’开头则是从
ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
java 怎么实现发送邮件例子
第一个类:MailSenderInfo.java view plain copypackage com.util.mail; /** * 发送邮件需要使用的基本信息 *author by wangfun
怎么用java发送邮件,像园子那样
1.首先你需要一个邮箱中转发送站(听着很高端的样子),说白了就是注册一个邮箱作为你的发送邮件平台,然后通过编程调用平台发送邮件(也就是你注册某个邮箱,然后开通SMTP/POP3协议,在编程中,拿着你的KEY去发送邮件),我试过很多种邮箱,QQ貌似不能用,网易经常报错,建议用新浪的,我用基本没出过问题。2.去网上下载java开源的发送邮件工具类:mail.jar,并导入myeclipse/eclipse的引用。3.编程(工具类)
如何在 java 发邮件中提供链接
这是一个通过Java发送Email的例子,很多新手问道如何用JAVA发邮件,其实挺简单的,Java给我们提供有此方面的类库可以使用,以下就是一个例子:view sourceprint?001 import java.awt.*; 002 import java.awt.event.*; 003 import java.util.*; 004 import java.net.*; 005 import java.io.*; 006 import javax.swing.*; 007 public class MailTest { 008 public static void main(String args) { 009 JFrame frame = new MailTestFrame(); 010 frame.show(); 011 } 012 } 013 class MailTestFrame extends JFrame implements ActionListener { 014 private BufferedReader in; 015 private PrintWriter out; 016 private JTextField from; 017 private JTextField to; 018 private JTextField smtpServer; 019 private JTextArea message; 020 private JTextArea response; 021 022 public MailTestFrame() { 023 setTitle(“MailTest“); 024 setSize(300, 300); 025 addWindowListener(new WindowAdapter() { 026 public void windowClosing(WindowEvent e) { 027 System.exit(0); 028 } 029 }); 030 getContentPane().setLayout(new GridBagLayout()); 031 GridBagConstraints gbc = new GridBagConstraints(); 032 // 当容器比组件要大时,只调整垂直方向组件的大小 033 gbc.fill = GridBagConstraints.HORIZONTAL; 034 gbc.weightx = 0; 035 gbc.weighty = 0; 036 037 gbc.weightx = 0; 038 add(new JLabel(“发送地址:“), gbc, 0, 0, 1, 1); 039 gbc.weightx = 100; 040 from = new JTextField(20); 041 add(from, gbc, 1, 0, 1, 1); 042 gbc.weightx = 0; 043 add(new JLabel(“收件地址:“), gbc, 0, 1, 1, 1); 044 gbc.weightx = 100; 045 to = new JTextField(20); 046 add(to, gbc, 1, 1, 1, 1); 047 gbc.weightx = 0; 048 add(new JLabel(“SMTP服务器:“), gbc, 0, 2, 1, 1); 049 gbc.weightx = 100; 050 smtpServer = new JTextField(20); 051 add(smtpServer, gbc, 1, 2, 1, 1); 052 gbc.fill = GridBagConstraints.BOTH; 053 gbc.weighty = 100; 054 message = new JTextArea(); 055 add(new JScrollPane(message), gbc, 0, 3, 2, 1); 056 response = new JTextArea(); 057 add(new JScrollPane(response), gbc, 0, 4, 2, 1); 058 gbc.weighty = 0; 059 JButton sendButton = new JButton(“发送“); 060 sendButton.addActionListener(this); 061 JPanel buttonPanel = new JPanel(); 062 buttonPanel.add(sendButton); 063 add(buttonPanel, gbc, 0, 5, 2, 1); 064 } 065 private void add(Component c, GridBagConstraints gbc, int x, int y, int w, 066 int h) { 067 gbc.gridx = x; 068 gbc.gridy = y; 069 gbc.gridwidth = w; 070 gbc.gridheight = h; 071 getContentPane().add(c, gbc); 072 } 073 public void actionPerformed(ActionEvent evt) { 074 // 异步机制,使得当所有的awt事件发生后才进行以下工作 075 SwingUtilities.invokeLater(new Runnable() { 076 public void run() { 077 sendMail(); 078 } 079 }); 080 } 081 public void sendMail() { 082 try { 083 Socket s = new Socket(smtpServer.getText(), 25); 084 out = new PrintWriter(s.getOutputStream()); 085 in = new BufferedReader(new InputStreamReader(s.getInputStream())); 086 String hostName = InetAddress.getLocalHost().getHostName(); 087 send(null); 088 // 传送本机域名 089 send(“HELO “ + hostName); 090 // 传送发信者信箱名称 091 send(“MAIL FROM: “ + from.getText()); 092 // 传送收信者信箱名称 093 send(“RCPT TO: “ + to.getText()); 094 // 发送信箱数据,包括信头和信体 095 send(“DATA“); 096 out.println(message.getText()); 097 // 发送结束标志 098 send(“.“); 099 s.close(); 100 } catch (IOException exception) { 101 response.append(“Error: “ + exception); 102 } 103 } 104 public void send(String s) throws IOException { 105 if (s != null) { 106 response.append(s + “\n“); 107 out.println(s); 108 out.flush(); 109 } 110 String line; 111 if ((line = in.readLine()) != null) 112 response.append(line + “\n“); 113 } 114 } 转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
怎样用java发送邮件
首先下载 JavaMail jar 包,并导入到项目中。下载地址
编写代码,代码如下:
- import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class App45 { public static void main(String args) throws AddressException, MessagingException { Properties properties = System.getProperties(); properties.setProperty(“mail.smtp.host“, “邮件发送服务器“); properties.setProperty(“mail.smtp.auth“, “true“); Session session = Session.getDefaultInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { // 设置发件人邮件帐号和密码 return new PasswordAuthentication(“邮件帐号“, “密码“); } }); MimeMessage message = new MimeMessage(session); // 设置发件人邮件地址 message.setFrom(new InternetAddress(“发件人邮件地址“)); // 设置收件人邮件地址 message.addRecipient(Message.RecipientType.TO, new InternetAddress(“收件人邮件地址“)); message.setSubject(“这里是邮件主题。“); message.setText(“这里是邮件内容。“); Transport.send(message); }}
更多文章:
concent(permit concent allows 有什么区别)
2024年7月9日 10:27
matlab怎么用最小二乘法拟合(有关matlab编程最小二乘法圆拟合的问题)
2024年3月19日 11:35
职业生涯规划大赛(大学生职业发展大赛和大学生职业生涯规划大赛一样吗)
2024年7月22日 23:33
framework笔记本(如何评价Framework笔记本)
2024年9月2日 14:45
ignited(高达seed-destiny第一季OP的歌词,叫Ignited)
2024年7月9日 07:35
sqlite数据库怎么读(如何读取 sqlite3 sqlite3)
2024年5月4日 01:40
windows上传文件到linux(怎么把windows上的文件传到linux)
2024年8月13日 21:30
shell编程中 2的意思(shell里的exit 2是什么意思)
2024年7月17日 02:10
java培训机构出来工资多少(java培训之后月薪过万—可能吗)
2024年9月2日 08:25
mysql union all(如何利用MySQL实现三张表连接union,union all)
2024年7月8日 13:22