- 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/
有什么方法可以自定义javascript提示框吗? 我想让我的提示只接受数字输入...(我想绑定(bind) keyup 事件 - 具体来说) 这可能吗? 最佳答案 默认的 javascript 提示
对我来说,现在是 bash-prompt-fiddling-time(总有一天……)。 我正在尝试获取两行提示: 第一行包含位置信息,背景颜色到行尾 第 2 行包含时间和上一个命令的退出代码 我快到了
大家好,我只是在学习 javascript,不过我有一些 html 和 css 背景。 我不知道如何只允许在提示中输入数字值,或者检查它是否是数字,如果不是则重新提示。文本框也是如此。 最佳答案 这是
编辑:原标题说“bash prompt”,但我使用“zsh”。我接受了@Artur R. Czechowski 的回答,因为它在 bash 上下文中是正确的,并且我能够在他的帮助下完成我的工作。 PR
是否可以配置stack ghci类似于ghci的方式通过 ~/.ghci 配置文件? 目前stack ghci不接受 ~/.ghci 中的设置文件。 我正在研究将提示设置为 lambda 而不是加载的
我喜欢在我的 PowerShell 提示符中包含 Mercurial/Git 存储库状态。有时这会减慢 prompt()功能相当大,导致长时间等待,直到您可以开始在 shell 中输入。我想知道,是否
我正在编写一个用于与远程服务交互的 PowerShell 模块。连接到远程服务时(通过模块中的函数),我想在提示符前添加用户名。断开连接后,我想删除用户名。 我以为我可以通过复制全局 prompt 来
我用java开发了我的远程屏幕共享软件。它工作正常,但是当使用 UAC 时,屏幕上会出现允许/禁止提示,但远程屏幕看不到它。所以每次用户都必须手动允许它。我想知道如何摆脱这个问题。 最佳答案 这正是
我有一个初始化脚本,它设置了几个变量供以后使用。最后一行定义了一个“提示”函数,我希望它能改变我的提示,作为初始化已经完成的指示。变量已设置,因此它不作为子进程运行,但我的提示顽固地停留在“PS”。出
我有一个与此类似的模板提示: prompt = f""" Write a poem about the topic delimited by triple backticks if it starts
我有一个与此类似的模板提示: prompt = f""" Write a poem about the topic delimited by triple backticks if it starts
我需要一些帮助才能恢复提示,现在我正在执行此 block ,不要让我恢复提示,我在运行末尾使用 &将此命令作为后台任务。执行脚本后如何返回提示符。 #!/bin/sh sudo su - user <
如果我的 html 中有一个简单的按钮: Start Game 我想要在我的 JS 中提示: var userAdjective = prompt("Please provide an Adjecti
我想提示用户在网页上进行一些输入。 我无法使用内置的 Javascript prompt 函数,因为它会在 IE 中创建安全警告。 是否有人们用来重新创建此内容的最佳实践/方法/示例? Javascr
我想将我的 bash 提示设置为固定宽度,并弥补 $ 之前的空格差异,因此无论长短,我的提示都保持相同的宽度: [name@host] ~/Directory/Dir...Another/LastDi
我有一个脚本可以读取用户的输入。这是我的代码: if [ -z $volreadexists ]; then echo -e "\tThis will overwrite the en
我的 ZSH 主题使用 .zsh-theme 文件中的 RPROMPT='$(vbox_status)' 输出我的 Vagrant/VBox VM 的状态(其中 vbox_status调用 a scr
我经常使用 vim,并且经常发现使用 !bash 进入命令行很有用。但是,我需要键入 exit 才能返回到 vim,有时我不确定我是否在子 shell 中或者这是否会关闭我的 session 。 我真
问题很简单。我想在我的 bash 脚本中评估 PS1 的当前值。 Google 上的所有资料都指向有关如何改进它的教程,但我想评估一下我当前的终端或至少 一些 终端将如何呈现它。 是否有任何软件/功能
如何在打印后台函数的输出后自动返回到我的 bash 提示符? 例如,当我在 bash shell 中运行以下脚本时: fn(){ sleep 10 echo "Done"
我是一名优秀的程序员,十分优秀!