- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个简单的小程序,它通过单击“发送邮件”按钮使用 smtp.gmail.com 发送邮件。它可以从 Eclipse 完美运行。从 eclipse 我将它作为 Java Applet 运行,它发送邮件没有任何错误。
但是当从appletviewer运行时,在eclipse之外它会抛出一个错误:java.security.AccessControlException:访问被拒绝(java.net.SocketPermission smtp.gmail.com解析)
我已经签署了我的程序的 JAR。签名后,如果小程序从 Internet Explorer 运行,它会发送邮件,但如果小程序从 Google Chrome 浏览器或 appletviewer 运行,则会抛出上述错误。
创建 keystore 的命令:“c:\Program Files\Java\jre6\bin\keytool.exe”-genkey -alias -validity 365 -keystore -keyalg rsa
对 jar 进行签名的命令:\bin\jarsigner.exe -signedjar -keystore
JAR 是通过仅从 Eclipse 导出相同的内容而形成的。
运行小程序的命令:“c:\Program Files\Java\jdk1.6.0_27\bin\appletviewer.exe”
请查看代码并让我知道我哪里做错了......
小程序代码
package in.appletmail;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class SendMailApplet extends JApplet
{
boolean isStandalone = false;
JPanel jPanel1 = new JPanel();
JTextField jTextField1 = new JTextField();
JButton jButton = new JButton("Send Mail");
GridBagLayout gridBagLayout1 = new GridBagLayout();
// Construct the applet
public SendMailApplet()
{
// TODO Auto-generated constructor stub
}
// Initialize the applet
public void init()
{
try
{
jbInit();
} catch (Exception e)
{
e.printStackTrace();
}
}
// Initializing the components
private void jbInit() throws Exception
{
this.setSize(new Dimension(500, 200));
jPanel1.setLayout(gridBagLayout1);
jTextField1.setText("First Applet");
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jTextField1, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets(140, 128, 139, 132), 77, 0));
jPanel1.add(jButton, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets(140, 128, 200, 132), 77, 0));
final String mailStatus = "Testing Applet Viewer";
jTextField1.setText(mailStatus);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
try
{
SendMail.mailVariable("Test mail from applet");
jTextField1.setText("Mail Send");
} catch (Exception e1)
{
jTextField1.setText(e1.toString());
}
}
});
// jTextField1.setText("Mail Send");
}
// Start the applet
public void start()
{
}
// Stop the applet
public void stop()
{
}
// Delete the applet
public void destroy()
{
}
// Fetch applet information
public String getAppletInfo()
{
return "Applet-Information";
}
}
发送邮件的代码
package in.appletmail;
import java.util.Properties;
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.InternetAddress;
import javax.mail.internet.MimeMessage;
public final class SendMail
{
private static final String SMTP_HOST_NAME = "smtp.gmail.com";
private static final String SMTP_PORT = "587";
private static final String SMTP_AUTH_USER = "username";
private static final String SMTP_AUTH_PWD = "pass";
private static final String emailMsgTxt = "Testing mail from Applet, Test again";
private static final String emailSubjectTxt = "Test mail from Applet via Google";
private static final String emailFromAddress = "test.mail@abc.in";
// Add List of Email address to who email needs to be sent to
private static final String[] emailList = { "To@gmail.com" };
public static String testFunctionCall()
{
return "Mailing function will be called";
}
public static String mailVariable(String variableValue)
throws MessagingException
{
SendMail smtpMailSender = new SendMail();
return smtpMailSender.postMail(emailList, emailSubjectTxt, emailMsgTxt
+ "\n variable value: " + variableValue, emailFromAddress);
}
public String postMail(String recipients[], String subject, String message,
String from) throws MessagingException
{
StringBuffer status = new StringBuffer();
boolean debug = false;
// Set the host smtp address
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.port", SMTP_PORT);
props.put("mail.smtp.auth", "true");
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getDefaultInstance(props, auth);
session.setDebug(debug);
status.append("Session set;");
// create a message
Message msg = new MimeMessage(session);
// set the from and to address
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++)
{
addressTo[i] = new InternetAddress(recipients[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
status.append("Recipients set;");
// Setting the Subject and Content Type
msg.setSubject(subject);
msg.setContent(message, "text/plain");
status.append("Subject and Content set;");
Transport.send(msg);
status.append("Mail send;");
return status.toString();
}
/**
* SimpleAuthenticator is used to do simple authentication when the SMTP
* server requires it.
*/
private class SMTPAuthenticator extends Authenticator
{
public PasswordAuthentication getPasswordAuthentication()
{
String username = SMTP_AUTH_USER;
String password = SMTP_AUTH_PWD;
return new PasswordAuthentication(username, password);
}
}
}
调用小程序的 HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ABC</title>
</head>
<body bgcolor="#CCCCCC">
<table border="0" cellpadding="0" cellspacing="0" width="144" >
<tr>
<td width="10%" height="25" style= "height:25">Powered by Xpace :)
</td>
<td width="90%"style= "height:25">
<APPLET CODEBASE="E:\Gunjan\Workspace\TestAppletExecution\Signed\"
ARCHIVE="TestApplet.jar, mail.jar"
CODE="in.appletmail.SendMailApplet.class"
NAME="Send Mail"
MAYSCRIPT
WIDTH="750"
HEIGHT="350"
HSPACE="0" VSPACE="0" ALIGN="top">
</APPLET>
</td>
</tr>
</table>
</body>
</html>
最佳答案
Applet 在沙箱中运行,有一些限制,您必须配置文件 jre/lib/security/java.policy 添加以下行:
permission java.net.SocketPermission "smtp.gmail.com:587", "listen,resolve";
关于java - Appletviewer 未从命令提示符运行 : java. security.AccessControlException : access denied (java.net.SocketPermission smtp.gmail.com 解析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10190015/
只是出于好奇,我想知道gmail是如何做到的。查看页面源代码后,您看不到任何链接、onclick 方法和 javascript。我知道他们隐藏了 javascript,但页面仍然知道有点击。是否有一个
最近谷歌宣布,出于安全目的,Gmail 将使用代理加载外部图像。这导致我的应用程序在 Gmail 中显示图像时出现问题。 Gmail图片元素检查: https://ci5.googleusercont
我想将节点脚本作为 cronjob 运行,它使用 Gmail 的 API 来轮询我拥有的 gmail 帐户。 我关注 these quickstart instructions : 我被困在第一步。在
如果您在 Gmail 上处于非事件状态,则通过一段时间不移动鼠标,您的聊天状态会更改为橙色,这意味着空闲。但是当您再次开始移动鼠标时,它会变回绿色,表示处于事件状态。它如何知道您何时移动鼠标? 最佳答
您知道,当您加载 GMail 时,左侧会显示“撰写邮件”、“收件箱”、“已发送邮件”等吗?我在页面源代码中搜索了“撰写邮件”,但一无所获。 最佳答案 Gmail 界面使用 JavaScript 动态加
我正在创建一个函数,使用 Google 的 API 从一个人的 gmail 帐户导入联系人。但是我知道许多企业注册 Google 是为了拥有更专业的域名(例如 some_name@bislr.com)
我可以通过桌面应用程序使用 Gmail API 成功读取我的收件箱内容。但是,当我尝试阅读其他人的 gmail 收件箱时,我收到 Delegation denied 异常? 所以我的问题是,Gmail
我已经读到我可以使用 gmail atom 提要从谷歌创建的“内置”标签中获取邮件。 但是当我尝试从“已读”标签获取邮件时,使用 https://mail.google.com/mail/feed/a
通过 Gmail API 发送到 Gmail 地址的邮件在 Gmail 中被标记为“小心处理此邮件。它包含通常用于窃取个人信息的内容。” 该消息基本上只是说测试。并且通过 Gmail SMTP 发送的
编辑 :解决下面的第一条评论,为清楚起见,这不是代码问题。问题很简单: 我应该在新 Gmail UI 的 URI 查询字符串中输入什么来查看 Gmail API 创建的草稿邮件? 尽管这并不是一个真正
我是谷歌产品的新手。我打算开始在 gmail 中添加一些东西。使用类似于 Add on 的 Add on 或 chrome Gmail Extension 更好吗?如果是add-on,我们不能直接在s
使用标准查询格式时,Gmail api 和 Gmail Web ui 的结果有所不同,如下所述 - https://support.google.com/mail/answer/7190 . 该问题专
我正在尝试创建一个 PHP 应用程序,它将自动设置用户的电子邮件签名。这部分有效,我可以为用户设置签名。 我的问题是我在 SendAs 设置中找不到任何选项,该选项将禁用 GMail 中签名前插入的两
我的电子邮件标记通过了电子邮件标记测试器,我尝试了 JSON-LD 和微数据,但无论如何 - 我只是看不到标记在 Gmail (iOS) 客户端中的任何效果。 即使是 Google 自己文档中的基本示
我目前正在使用 Gmail 实验室功能 - canned responses.我有很多这样的预设回复并使用 their menu找到合适的,证明是耗时的。通过以下方式找到预设响应会更容易: 将预设回复
请问是否可以在我的 Gmail 状态中发布倒计时? 像“01:44:15:23”及其不断递减。 最佳答案 发现一个好 article to share : Google Talk 使用 XMPP 那么
我开发了一个上下文小工具并将其安装在我的域中。它在我的域中运行良好,但在我的域之外无法正常工作。如何在我的域外访问我的小工具? 最佳答案 您指的是您的 Google Apps 域吗?根据 Google
我在 this guide 之后配置了推送通知并在调用 watch 时端点我得到大约一周的到期时间。 在此期间,我希望收到有关我已配置的 Pub/Sub 主题的通知,而无需调用 watch。在到期日期
是否有可以在 gmail 中捕获的 API 或事件,以便我可以启动工作流甚至触发 python 脚本。 我正在尝试自动化一项工作,该工作将从已到达 gmail 的电子邮件中提取 csv 附件。然后它会
为什么网络版的 Gmail 会在不使用 = 标记中断位置的情况下对邮件内容进行换行,这使得电子邮件处理变得非常困难: 查看gmail发送的原始邮件内容: 这封由 Mac OS X Mail 发送的邮件
我是一名优秀的程序员,十分优秀!