- 浏览: 333384 次
- 性别:
- 来自: 温州
文章分类
最新评论
-
helloworldlove:
Axis_UNZIP_PATH\Axis-version\we ...
3步把您的java程序转换为webservice -
hcqenjoy:
这个工具能再提供下吗 已经没办法下载了 谢谢
汉化 Flex Builder 3 帮助文档 -
NASa_CJ:
String source = HttpClientExamp ...
利用HttpClient获取网页内容 -
zlsj80:
下载地址无效了,楼主修正一下吧
汉化 Flex Builder 3 帮助文档 -
fykyx521:
下载地址都不能用了,是不过时了
汉化 Flex Builder 3 帮助文档
现在大多数smtp服务器都需要身份认证,若用javamail写一个邮件收发客户端,怎么来实现这种功能呢?下面是一个简单的列子,模拟foxmail对认证功能的实现。 package jmail; import javax.mail.*; import java.util.*; import java.sql.*; import javax.swing.*; import java.awt.*; public class MailAuthenticator extends Authenticator{ String authenName; //用户名 String authenPass; //密码 public MailAuthenticator(String authenName,String authenPass) { super(); this.authenName=authenName; this.authenPass=authenPass; } public PasswordAuthentication getPasswordAuthentication(){ /*若服务器需要身份认证,Sission会自动调用这个方法 String temp=null; if(authenPass.equals("")||authenPass==null){ /*若密码为空*/ Option op=new Option(null,"身份验证",true); /*弹出要求用户输入密码的对话框,Option是自定义的JDialog,包含一个密码域*/ temp=op.showDialog(); /*Option的返回输入的密码*/ authenPass=temp; } return new PasswordAuthentication(authenName,authenPass); } } /* 下面是Option 类,jbuilder里写的,无须解释*/ package jmail; import java.awt.*; import javax.swing.*; import com.borland.jbcl.layout.*; import java.awt.event.*; public class Option extends JDialog { JPanel panel1 = new JPanel(); JLabel jLabel1 = new JLabel(); XYLayout xYLayout1 = new XYLayout(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JPasswordField jPasswordField1 = new JPasswordField(); JLabel jLabel2 = new JLabel(); JLabel jLabel3 = new JLabel(); Icon forget=new ImageIcon(".\images\forget.gif"); boolean ok=false; JLabel jLabel4 = new JLabel(); JLabel jLabel5 = new JLabel(); public Option(Frame frame, String title, boolean modal) { super(frame, title, modal); try { jbInit(); pack(); } catch(Exception ex) { ex.printStackTrace(); } } public Option() { this(null, "", false); } private void jbInit() throws Exception { panel1.setLayout(xYLayout1); jLabel1.setFont(new java.awt.Font("Dialog", 0, 12)); jLabel1.setText("密码:"); jButton1.setFont(new java.awt.Font("Dialog", 0, 12)); jButton1.setDoubleBuffered(false); jButton1.setText("确定"); jButton1.addActionListener(new Option_jButton1_actionAdapter(this)); jButton2.setFont(new java.awt.Font("Dialog", 0, 12)); jButton2.setText("取消"); jButton2.addActionListener(new Option_jButton2_actionAdapter(this)); jLabel2.setFont(new java.awt.Font("Dialog", 0, 12)); jLabel2.setHorizontalTextPosition(SwingConstants.TRAILING); jLabel2.setIcon(forget); jLabel2.setText(""); jLabel3.setFont(new java.awt.Font("Dialog", 0, 12)); jLabel3.setText("服务器需要身份认证, 请输入密码"); panel1.setToolTipText(""); jLabel4.setText(" "); jLabel5.setText(" "); getContentPane().add(panel1, BorderLayout.CENTER); panel1.add(jLabel4, new XYConstraints(189, 61, -1, -1)); panel1.add(jLabel2, new XYConstraints(15, 1, 67, 19)); panel1.add(jLabel3, new XYConstraints(15, 22, -1, -1)); panel1.add(jPasswordField1, new XYConstraints(48, 46, 140, -1)); panel1.add(jLabel1, new XYConstraints(15, 48, -1, -1)); panel1.add(jButton1, new XYConstraints(46, 79, 58, 22)); panel1.add(jButton2, new XYConstraints(112, 79, 58, 22)); panel1.add(jLabel5, new XYConstraints(85, 102, -1, 12)); this.getRootPane().setDefaultButton(jButton1); this.setSize(220,130); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation((int)screenSize.getWidth()/2-80,(int)screenSize.getHeight()/2-50); } void jButton1_actionPerformed(ActionEvent e) { ok=true; this.dispose(); } void jButton2_actionPerformed(ActionEvent e) { ok=false; this.dispose(); } public String showDialog(){ show(); if(ok)return new String(jPasswordField1.getPassword()); else return null; } } class Option_jButton1_actionAdapter implements java.awt.event.ActionListener { Option adaptee; Option_jButton1_actionAdapter(Option adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } class Option_jButton2_actionAdapter implements java.awt.event.ActionListener { Option adaptee; Option_jButton2_actionAdapter(Option adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } } /*下面写一个发送邮件主类,利用上面的MailAuthenticator类来提供身份验证 */ package jmail; import javax.mail.*; import javax.mail.internet.*; import javax.swing.*; import java.io.*; import javax.activation.*; import java.util.*; public class SendMail{ public static void main(String[] args) { String host=""; String from=""; String to=""; String name=""; String pass=null; String subject=""; String content=""; MailAuthenticator ma; if(args.length<6){ /*小于6,先不输入密码,发送过程服务器要求认证时就会跳出密码输入框(Option类)*/ System.out.println("enter<host><from><to><name><pass><subject><content>"); System.exit(0); } else { host=args[0]; /*smtp服务器*/ from=args[1]; /*发件人*/ to=args[2]; /收件人*/ name=args[3]; /*smtp认证用户名,一般跟pop3登录相同*/ subject=args[4]; /*邮件主题*/ content=args[5]; /*邮件内容*/ } try{ ma=new MailAuthenticator(name,pass); Properties props=System.getProperties(); props.put("mail.smtp.host",host); props.put("mail.smtp.auth","true"); /*服务器需要认证*/ Session session=Session.getInstance(props,ma); /*Session会自动调用getPasswordAuthentication()方法*/ MimeMessage msg=new MimeMessage(session); msg.setFrom(new InternetAddress(from)); msg.setRecipient(Message.RecipientType.TO,new InternetAddress(to)); msg.setSubject(subject); msg.setText(content); msg.setSentDate(new java.util.Date()); Transport.send(msg); System.out.println("Send Email Success"); }catch(Exception e){ System.out.println(e.getMessage()); } } } 可以自己写个UI界面的SendMail()主类,再加入发送附件和群发邮件的功能,那么将是一个完整的邮件发送客户端程序。 |
发表评论
-
Java 5.0 多线程编程实践
2006-01-23 13:20 763<noscript type="text/ja ... -
web开发框架——JSF开发实战
2006-01-23 20:01 1409JSF开发实战的第一篇(jsf开发实战一)演示了如何建立一个最 ... -
Tomcat 的数据库连接池设置与应用
2006-01-23 20:28 7611.将数据库驱动程序的JAR文件放在Tomcat的 commo ... -
Eclipse Plugins Manager Beta 0.1 (Link's Only) 发布
2006-03-18 17:11 780<noscript type="text/ja ... -
常青图书管理系统 BETA V0.1
2006-03-19 15:03 834<noscript type="text/ja ... -
Java程序的性能优化
2006-03-19 15:15 798<noscript type="text/ja ... -
Java中四种XML解析技术之不完全测试
2006-03-20 12:16 691<noscript type="text/ja ... -
解决Tomcat中文乱码问题
2006-03-26 22:58 859一、中文问题的来源 计算机最初的操作系统支持的编码是单 ... -
Swing技巧. 设置全局字体(sun jdk)
2006-04-02 14:04 1331S ... -
Dom4j 使用简介
2006-04-05 20:19 667DOM4J是dom4j.org出品的一个开源XML解析包 ... -
Java手机技术 之 J2ME及其基本慨念
2006-04-06 12:42 719如果您曾经http://www.javasoft.com ;网 ... -
Java手机技术 之 J2ME新手入门要点
2006-04-06 12:50 997一、J2ME中需要的Java基础知识现在有大部分人,都是从零开 ... -
JAVA设计模式系列之Singleton模式
2006-04-06 13:18 821单态定义: Singleton模式主要作用是保证在Java应 ... -
高手指点你实战体会Java的多线程编程
2006-04-06 13:39 831在 Java 程序中使用多线程要比在 C 或 C++ 中容 ... -
Java基础--JSP应用语法详解大全
2006-04-06 13:49 8891)HTML注释: 可以用注释内容,也可以用表达式. 2) ... -
javamail使用完全手册
2006-04-08 20:44 8681,哪里是开始:初始环境,安装好你的j2sdk和你的web服务 ... -
JavaMail通过sina的smtp验证
2006-04-08 20:47 1110import javax.mail.*;import java ... -
用javamail发送邮件
2006-04-08 20:49 990用javamail发送邮件 aistill(原作) ... -
修改后可以发送附件、抄送、密送的javabean
2006-04-08 20:51 926/**A ... -
TOMCAT 5设置数据连接池总结
2006-04-14 21:34 494TOMCAT 5,要设置一个数据连接池,以MYSQL为例子(M ...
相关推荐
2. 设置SMTP服务器的属性,包括主机名、端口、身份验证等: ```java Properties props = new Properties(); props.put("mail.smtp.host", "smtp.qq.com"); // QQ邮箱的SMTP服务器 props.put("mail.smtp.port", ...
在此过程中,JavaMail会与SMTP服务器建立连接,验证身份(如果需要),并传输邮件。 对于邮件接收,JavaMail API同样提供了`Store`接口,可以连接到邮件服务器(如James)的邮箱,获取和处理新邮件。这通常涉及以下...
5. **MyAuthenticator.java**:这个文件可能定义了一个自定义的认证类,用于处理邮件服务器的身份验证。在某些情况下,邮件服务器可能需要用户名和密码进行授权,这时 `MyAuthenticator` 类会继承 `javax.mail....
在上述代码中,我们使用了 `Session` 类来建立与 SMTP 服务器的连接,并通过 `Authenticator` 实现了身份验证。`MimeMessage` 类用于创建邮件对象,我们可以设置发件人、收件人、主题和正文。最后,`Transport.send...
在实际操作中,可能需要处理异常,如网络问题或身份验证失败等。 3. **在Struts中整合JavaMail**: - **创建Action**:定义一个Struts Action类,该类包含发送邮件的方法。在方法内部调用JavaMail API发送邮件。 ...
这表明JavaMail将启用SMTP身份验证。然后,通过自定义`MyAuthenticator`类实现身份验证: ```java MyAuthenticator myauth = new MyAuthenticator("用户名", "密码"); Sessions session = Session....
` 表示开启SMTP身份验证。 - `prop.put("mail.smtp.host", "smtp.163.com");` 指定SMTP服务器地址,这里以163邮箱为例。 - `prop.put("mail.user", "cff233926@163.com");` 设置发件人邮箱地址。 - `prop.put(...
总之,Java编程实现邮件发送含身份验证是一个涉及网络编程、SMTP协议、JavaMail API和身份验证等多个知识点的综合任务。通过理解并应用这些概念,你可以创建一个可靠的邮件发送系统,满足各种业务需求。
在此之前,可能需要设置认证信息,尤其是当SMTP服务器需要身份验证时。 接收邮件的过程相对复杂,涉及到连接邮件服务器、打开邮箱存储、获取邮件夹以及遍历邮件消息。你可以使用`Store`对象来连接邮件服务器,然后...
7. **认证机制**:JavaMail 支持多种身份验证机制,包括基本认证、NTLM、DIGEST-MD5等,以适应各种安全需求。 8. **邮件会话和属性**:邮件会话是JavaMail的核心概念,它封装了与邮件服务器交互所需的所有配置信息...
3. 登录并创建 Transport:使用 `Session` 创建 `Transport` 对象,然后通过 `Authenticator` 进行身份验证: ```java Session session = Session.getInstance(props, new Authenticator() { protected ...
2. 身份验证:发送EHLO或HELO命令告知服务器客户端的身份,并可能进行身份验证(如AUTH PLAIN, LOGIN等)。 3. 发送邮件:使用MAIL FROM命令指定发件人地址,使用RCPT TO命令指定收件人,然后使用DATA命令发送邮件...
在实际开发中,为了简化这些操作,我们可以利用JavaMail API,它提供了一个更高级别的接口来处理SMTP邮件发送,同时支持SSL/TLS。不过,直接使用Socket编程能让我们更好地理解邮件发送的底层工作原理。 在提供的...
对于需要身份验证的邮件服务器,JavaMail 支持多种认证方式,如 PLAIN、LOGIN、CRAM-MD5 和 DIGEST-MD5。 8. **示例程序**: 压缩包中的示例程序可以帮助开发者快速理解如何使用 JavaMail API 实现各种邮件操作,...
此外,对于需要身份验证的邮件服务器,JavaMail可以通过提供用户名和密码来实现。 7. **邮件附件**: - `Multipart` 类用于创建包含多个部分的邮件,比如文本、HTML和附件。`MimeBodyPart` 和 `MimeMultipart` 类...
4. **SSL证书**: SSL证书包含公钥和私钥对,用于身份验证和加密。服务器证书由受信任的证书颁发机构(CA)签发,以证明服务器的身份。安装证书到Java的信任存储库是连接到SSL服务器的关键步骤。 5. **InstallCert...
通过 `System.getProperties()` 获取系统属性,并设置邮件服务器的主机名(`mail.smtp.host`)和是否启用身份验证(`mail.smtp.auth`)。然后通过 `Session.getDefaultInstance()` 创建一个默认的会话实例。 2. ...
例如,某些服务器可能需要启用TLS/SSL,或者使用特定的身份验证方式。 总之,JavaMail是一个强大且灵活的库,可以帮助开发者轻松地在Java应用中实现邮件功能。提供的源码示例将帮助初学者快速理解并掌握JavaMail ...
在Java中实现SMTP服务器功能,开发者还需要熟悉Java的网络编程API,如`java.net.Socket`和`java.io`包中的类,以及可能的第三方库,如Apache Commons Net或JavaMail API,来简化SMTP通信。同时,为确保程序的稳定性...
4. **认证机制**:在处理需要身份验证的邮件服务器时,JavaMail 支持包括SMTP AUTH在内的多种认证方式,如简单的用户名和密码、NTLM或OAuth2。 5. **会话和属性**:JavaMail 中的`Session`对象是所有邮件操作的基础...