如何使用java邮件API验证SMTP服务器的SSL/TLS证书?
我们正在添加通过 SMTP 发送电子邮件的功能.基本上,当用户尝试通过 UI 添加和保存 SMTP 服务器详细信息时,我需要验证服务器的证书.我可以完成“发送邮件"代码;有足够数量的示例 :) 但是,我正在尝试查看是否有任何方法可以从 SMTP 服务器获取证书详细信息并使用 java 邮件 API 在客户端进行验证;我可以看到 Transport.connect() 方法隐式地验证服务器证书,但我试图了解是否有任何明确的方式来做这件事.简而言之,这是我想要实现的两件事: 1) 从服务器获取 SLL/TLS 证书并提示用户相关细节(如证书是否有效).2) 如果证书无效,请提供将其添加到密钥库的选项. 任何通过 java 邮件 API 完成此操作的提示将不胜感激. 解决方案 您可以使用 openssl 获取 SSL/TLS 或 STARTTLS 的服务器证书. 对于 SSL/TLS: openssl s_client -connect smtp.gmail.com
594 2022-08-10
编程技术问答社区
Android Javamail自定义认证
所以,我意识到SASL未在Android中实现,因此JavaMail OAuth2方法不会出框. 但是,根据Gmail IMAP的Google API文档( https://开发人员. google.com/google-apps/gmail/xoauth2_protocol )获取auth令牌,对其进行编码相当琐样,并手动将"验证Xoauth2"发送到服务器. 我的问题:我想使用javaMail IMAP函数(不想处理IMAP协议命令和响应颈局),但我需要一种方法来简单地插入正确的身份验证命令 - 而不是传统的登录用户名密码. 可以做到这一点,什么是最简单的方法?我可以创建自己的身份验证方法并轻松实现这一点吗? 或者,我可以创建连接,然后将此交给IMAPstore(怀疑它会在创建和管理连接池时工作). ---编辑--- javax.security.sasl方法只是更具体的,javax.security.sasl方法在Android中没有实现,android
382 2022-07-19
编程技术问答社区
Javamail ISO-8859-1格式化
我为我的Android手机带来了一封电子邮件客户端,带有JavaMail API.如果我试图通过以下方法获取发件人的邮件和收件人地址: Address[] froma = m.getFrom(); String from = InternetAddress.toString(froma); Address[] toa = m.getRecipients(Message.RecipientType.TO); String to = InternetAddress.toString(toa); 我得到一个像这样的绳子: "georg =?ISO-8859-1?q?sp = e4?= 它必须是GeorgSpäthe或Georg Spaethe. 我认为问题是,这是德国邮件与另一个编码.任何人都可以帮助我解决这个问题吗? 解决方案 mime标题按 rfc 2047 ,因此您需要首先解码它们. String de
298 2022-07-19
编程技术问答社区
提取JSP页面内容
我正在研究邮件API模块,其中我必须开发关于应用程序中各种功能的邮件发送邮件的通用功能. 有一个提出的功能,其中模块将公开一种方法以及一些所需参数的方法将采用JSP模板的NANE. 它希望这将提取JSP的内容,这将是一个良好的邮件模板和发送邮件. 在Java中有任何方法可以从此可以从此JSP页面中提取内容(HTML),以便我可以将HTML内容用于邮件. 提前感谢 解决方案 你有两个路径去,第一个有点较短: 使用new URL("http://site.com/url/to/page.jsp").openConnection(),获取InputStream并读取内容 - 这将是您的服务器对自己的请求并获取结果 使用Filter和HttpServletResponseWrapper,并返回自定义Writer/OutputStream.每次写入Write Isper/Stream时,将其委派给原始对象,也将其写入您可以从稍后阅读的地方.这种解释是不够的,因
288 2022-07-19
编程技术问答社区
如何以编程方式为邮件任务添加Ant库的依赖项
我已被任意为我们的Ant构建脚本创建自动通知.这是为了让某人推出部署时,我们的团队可以自动收到关于它的电子邮件. 显而易见的选择是使用 ant邮件任务,其预定义与Ant: A new build has been pushed out to prod 但是这导致以下运行时异常: java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage 这是因为蚂蚁的邮件任务取决
338 2022-07-19
编程技术问答社区
安卓系统在后台发送邮件
我已经看到了很多次,易于使用Android Intent Action.send在前台发送电子邮件. 但是,我需要实施反馈表,该反馈表将我们电子邮件发送了详细信息完成.这并不真的适合Android Intent,因为在发送之前希望看到生成的电子邮件. 如果我们假设smtp服务器是lol.does.dops和lala,password = po. 欢呼 解决方案 可能的副本:使用javaMail API在Android中发送电子邮件,而无需使用默认的Android应用程序(内置电子邮件应用程序)以及那里的示例代码. 作为一个编辑说明,随时我在手机上使用的应用程序发送电子邮件,我个人会在前景中想要它.如果它只是从申请表的表格反馈,您也可以使用电子邮件以外的多个解决方案:WebView中的Web表单,或者将套接字返回给您主机的服务器,或者使用WebService等...
238 2022-07-19
编程技术问答社区
在安卓系统中不能用Pop接收邮件
我可以使用此代码示例使用imap收到我的邮件: URLName server = new URLName("imaps://" + username + ":"+ password + "@imap.gmail.com/INBOX"); Session session = Session.getDefaultInstance(new Properties(), null); Folder folder = session.getFolder(server); if (folder == null) { System.exit(0); } folder.open(Folder.READ_ONLY); Message[] messages = folder.getMessages(); 但有时imap不给出任何服务,在那些我想要使用pop的时间,但我无法使用我的代码.使用接收邮件是不同的其他代码.但在Android中只有此代码正在运行.
232 2022-07-19
编程技术问答社区
SMTP邮件发送问题:com。太阳邮政smtp。SMTPAddressFailedException:550 5.7.1无法中继
我正在尝试从 Java 发送邮件.如果我将邮件发送到同一个 SMTP,它工作正常.如果我将邮件发送到外部 SMTP 方式,例如 Gmail、Yahoo 等,则会显示错误, [com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 无法中继][1] 错误: SimpleEmail Start javax.mail.SendFailedException: Invalid Addresses; nested exception is: com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 Unable to relay Mail Send Successfully at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:2064) at com.sun.mail.smtp
964 2022-07-19
编程技术问答社区
查找电子邮件附件大小
我有以下代码,我在其中将文件作为附件附加到电子邮件中.我也尝试找到 bodypart 的大小(在这种情况下为附件),但它返回我 -1.我哪里错了? mBP = new MimeBodyPart(); DataSource source = new FileDataSource(fileName); mBP.setDataHandler(new DataHandler(source)); content.addBodyPart(mBP); String attachmentSize = mBP.getSize()+"Bytes"; 即使附件被正确发送,它也会返回大小为 -1Bytes. 解决方案 您无法从 getSize() 方法获得确切的附件大小.它接近实际大小的 60%,因为该方法忽略了任何编码内容.唯一的方法是将内容读取为字节以计算大小.
192 2022-07-19
编程技术问答社区
从最近的安卓系统中以编程方式发送电子邮件
我已阅读 问题链接在这里.例如,当用户按下按钮时,我已经尝试过这种方法以编程方式发送电子邮件. 它确实适用于 2.3.7 版本的 Android. 问题是当尝试在更新的 Android 版本(如 4.1.2)上启动应用程序时,它没有任何反应.在这些设备上会出现 toast,但不会发送电子邮件. 所以,我尝试了这段代码,但它也不起作用. ... sendButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //Read EditText EditText text = (EditText)findViewById(R.id.editText1); String my_mail = text.getText().toString().to
462 2022-07-19
编程技术问答社区
在android中使用javamail根据日期时间检索电子邮件
我正在做任务来检索gmail.我设法用以下代码检索.但是,它检索到最早到Gmail收件箱中的最新电子邮件的电子邮件.有没有办法让它检索最新的邮件?我打算实现一种方法来检索最新的20封邮件,而不是检索收件箱中的所有邮件.提前感谢指导. public ArrayList> getMail(int inboxList){ Folder inbox; /*  Set the mail properties  */ Properties props = System.getProperties(); props.setProperty("mail.store.protocol", "imaps"); try { /*  Create the session and get the st
342 2022-07-19
编程技术问答社区
如何在安卓系统中使用java邮件将应用程序的电子邮件同步到服务器上的电子邮件
我想在电子邮件应用程序中同步更改,然后在服务器电子邮件中自动更改.例如: - 我在电子邮件应用程序上阅读了未读消息,然后自动服务器电子邮件更改未读邮件以读取邮件. 我的电子邮件应用程序已使用邮件jar文件,激活.jar和其他jar文件使用 和以下代码用于连接到服务器电子邮件的连接电子邮件应用程序.. Properties props = System.getProperties(); props.setProperty("mail.store.protocol", "imaps"); props.put("mail.smtp.starttls.enable","true"); Authenticator auth = new Authenticator() { protected PasswordAuthentication getPasswordAuthenticatio
640 2022-07-17
编程技术问答社区
如何使用javamail将base64图像嵌入电子邮件
我正在尝试从 javamail 发送带有嵌入 base64 图像的电子邮件 (img alt='image PNG' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...AElFTkSuQmCC'") 它适用于小图像,但是当图像较大时,图像不会显示在莲花笔记中. 这里是部分代码 Transport transport = mailSession.getTransport(); MimeMessage message = new MimeMessage( mailSession ); message.setSubject( subject ); message.setFrom( new InternetAddress( me) ); message.setContent( bodyWithEmbeddedBase64Image, "text/html" ); transport.connect(); transport.s
204 2022-07-17
编程技术问答社区
BouncyCastle 用SMIME和X.509加密邮件
我正在尝试使用JavaMail库和BouncyCastle库发送加密邮件: 这是我写的代码,或者我遵循了教程: public class SendMail extends javax.mail.Authenticator { private String _user; private String _pass; private String[] _to; private String _from; private String _port; private String _sport; private String _host; private String _subject; private String _body; private boolean _auth; private boolean _debuggable; private Multipart _multipart; SharedPreferences sharedPrefs; InputStr
1734 2022-07-17
编程技术问答社区
用加密的密码连接到gmail(使用imap和javamail)。
我正在尝试使用一个简单的 Java 程序连接到 gmail(例如 http://tinyurl.com/中的这个y4hfl8l).但我的问题是: 出于安全原因,有没有办法使用加密密码而不是真实密码来做到这一点!类似于我们在 java-Oracle db 中的操作方式? 解决方案 默认情况下,IMAP 的唯一身份验证机制是 LOGIN 命令,它采用未加密的用户名和密码.您可以在其上添加加密层,通过 IMAP 连接或通过 STARTTLS 命令启动 TLS 层,但它仍然需要客户端知道明文密码. 服务器还可以选择提供可通过 AUTHENTICATE 命令调用的 SASL 身份验证方法.服务器在其对 CAPABILITY 命令的响应中通告它支持的 SASL 机制.例如,如果服务器包含“AUTH=PLAIN"功能,则客户端可以通过AUTHENTICATE PLAIN IMAP 命令使用PLAIN SASL 身份验证方法. Gmail 仅支持一种 SASL 身份验证机制,X
228 2022-07-17
编程技术问答社区
当收件人和抄送人名单中的邮件被重复发送时,Java Mail就会重复发送邮件。
我发现当我的电子邮件地址在 TO 列表和 CC 列表中时,我的应用程序会向我发送两次电子邮件. 如何控制邮件只发送一次到同一个邮箱地址,但地址在TO和CC列表中? transport.connect(); transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO)); transport.sendMessage(message, message.getRecipients(Message.RecipientType.CC)); transport.close(); 解决方案 对不起,我解决了这个问题: transport.connect(); transport.sendMessage(message, message.getAllRecipients()); transport.close(); 我不知道有一个函数: message.getAll
662 2022-07-17
编程技术问答社区
如何以编程方式为邮件任务添加Ant库的依赖项
我的任务是为我们的 Ant 构建脚本创建自动通知.这样当有人推出部署时,我们的团队可以自动收到一封有关它的电子邮件. 显而易见的选择是使用预定义的 Ant 的邮件任务与蚂蚁: A new build has been pushed out to prod 但是这会导致以下运行时异常: java.lang.ClassNotFoundException: javax.mail.internet.MimeMessage 这是因为 Ant 的邮件任务
176 2022-07-17
编程技术问答社区
JavaMail连接问题
我正在尝试测试一个在网上找到的简单程序,以使用 JavaMail 发送电子邮件.我正在尝试使用工作电子邮件,但收到错误消息“无法连接到 SMTP 主机:..."和“权限被拒绝:连接".我浏览了有关此问题的其他帖子,包括: JavaMail Exchange 身份验证 使用 JSP 发送电子邮件 JavaMail API 到 iMail -- java.net.SocketException:权限被拒绝:连接 我想我已经解决了那些帖子的解决方案中提到的问题,这些问题基本上是 IPv4 问题和身份验证.我是尝试使用 JavaMail 的新手,所以我想知道我是否犯了其他一些初学者错误.还有其他我忽略的事情吗?是否有可能我无法以这种方式访问​​服务器?我使用了通用名称,而不是我公司的实际名称. 代码如下: public static void main(String[] args) { System.setProperty("java.net.pr
346 2022-07-17
编程技术问答社区
使用javamail发送邮件的时候如何阻止附件内容输出到控制台
问 题 我在使用JavaMail发送带附件的邮件时候,每次到了Transport.sendMessage()这一步,控制台就会输出附件内容,请问如何设置可以取消输出呢? public void sendFileAttachedMail(String fromMail, String toMail, String fromMailPwd, String bookId) { Properties prop = new Properties(); prop.setProperty(MAIL_HOST, MAIL_HOST_VALUE); prop.setProperty(MAIL_TRANSPORT_PROTOCOL, MAIL_TRANSPORT_PROTOCOL_VALUE); prop.setProperty(MAIL_SMTP_AUTH, MAIL_SMTP_AUTH_VALUE); Sessi
610 2022-07-17
编程技术问答社区