我有一个需要发送确认电子邮件等的Tomcat应用程序.我已经用Javamail(mail.jar)编写了电子邮件编码器来发送多部分文本/ HTML电子邮件.我将代码基于Java EE示例.我在本地服务器上使用SMTP MTA.
它很棒.在Outlook中,我看到了HTML版本.如果我将其拖到Outlook垃圾邮件文件夹中,我会看到文本版本.所以我解释说它有效.
但是,如果我在Gmail中查看电子邮件,我只会看到文字版本.我知道HTML就在那里(这就是Outlook从中得到的).但是Gmail没有显示它...我有很多来自其他系统的电子邮件,在Gmail中显示为HTML.
有人能指出我显示我失踪的规格吗?我需要创建特殊标题吗?
谢谢
代码如下所示:
Message message = new MimeMessage(session);
Multipart multiPart = new MimeMultipart("alternative");
try {
MimeBodyPart textPart = new MimeBodyPart();
textPart.setText(text, "utf-8");
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(html, "text/html; charset=utf-8");
multiPart.addBodyPart(htmlPart);
multiPart.addBodyPart(textPart);
message.setContent(multiPart);
if(from != null){
message.setFrom(new InternetAddress(from));
}else
message.setFrom();
if(replyto != null)
message.setReplyTo(new InternetAddress[]{new InternetAddress(replyto)});
else
message.setReplyTo(new InternetAddress[]{new InternetAddress(from)});
InternetAddress[] toAddresses = { new InternetAddress(to) };
message.setRecipients(Message.RecipientType.TO, toAddresses);
message.setSubject(subject);
message.setSentDate(new Date());
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
System.out.println("Error: "+e.getMessage());
} catch (MessagingException …Run Code Online (Sandbox Code Playgroud) PhantomJS在为我捕获网页到图像文件方面做得非常出色.我正在使用基于rasterize.js的脚本.
但是,对于某些固定大小的Web元素,我需要生成的图像与Web元素的大小相匹配.
我有一个这样的页面:
<html>
<body>
<div id="wrapper" style="width:600px; height:400px;">
Content goes here...
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我需要它来生成一个600x400的图像.是一种基于我正在栅格化的页面中的web元素动态获取视口大小的方法.
我知道这个不是一个简单的...想法?
谢谢
Go 1.16 已经发布,我想使用新的嵌入功能。如果一切都在主包中,我可以让它工作。但是不清楚如何处理从子文件夹/包访问资源。尝试通过 embed.FS 支持来实现。
例如,我在处理程序包/文件夹中有一个 main.go 和一个 HTTP 处理程序
如果我将处理程序放在主程序中,它就可以工作。如果我把它放在处理程序包中,它找不到模板。我得到:
handlers/indexHandler.go:11:12: pattern templates: no matching files found exit status 1
同样,如果我从 / 提供它,我可以让它从静态文件夹提供图像。但是我不能同时提供来自 / 的处理程序和来自 / 的静态/图像。如果我将图像放在 /static/ 上,它找不到图像。
我认为这与相对路径有关。但是我无法通过反复试验找到正确的组合......依赖这些功能是否为时过早?
以前我用的是 go-rice,我没有这些问题。但我想尽可能多地使用 std 库。
main.go:
package main
import (...)
//go:embed static
var static embed.FS
func main() {
fsRoot, _ := fs.Sub(static, "static")
fsStatic := http.FileServer(http.FS(fsRoot))
http.Handle("/", fsStatic)
http.HandleFunc("/index", Index)
http.ListenAndServe(":8080", nil)
}
Run Code Online (Sandbox Code Playgroud)
处理程序/indexHandler.go:
package handlers
import (...)
//go:embed templates
var templates embed.FS
// Index handler
func Index(w http.ResponseWriter, r …Run Code Online (Sandbox Code Playgroud) 我希望这是一个愚蠢的事情.但我一直盯着它看太久了.
我在Linux上升级到Tomcat 7(从6开始),它忽略了我的context.xml文件.如果我在server.xml中包含Context(数据源),它可以正常工作.但我想最终从server.xml中获取这些东西.
我使用分离的上下文在Windows/Eclipse中运行Tomcat 7,它运行正常.
我尝试过Host copyXML参数.即使它确实复制了context.xml,它也不会使用它...除非我将它包含在server.xml中的Host中.当它失败时,它抱怨它无法获得我的MySQL连接:"无法获得连接,DataSource无效"
我确定配置的其余部分很好,因为当我将它粘贴到server.xml时它可以工作...
有人可以指出我错过了什么吗?不应该这么困难.谢谢!
顺便说一句:在CentOS 5.9(64)上,它是简单的Tomcat7(不是rpm),JDK-7u11.
位置:
/var/webapps/shop1
query.jsp
/var/webapps/shop1/META-INF
context.xml
Run Code Online (Sandbox Code Playgroud)
在server.xml中:
<Host name="dev3.domain.net" appBase="/var/webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="shop1" path="" reloadable="true" />
</Host>
Run Code Online (Sandbox Code Playgroud)
context.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/shop1db" auth="Container"
type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
maxActive="50" maxIdle="25" maxWait="10000"
username="user" password="pass"
driverClassName="com.mysql.jdbc.Driver"
validationQuery="SELECT 1"
url="jdbc:mysql://localhost/shop1"
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="60"
/>
</Context>
Run Code Online (Sandbox Code Playgroud)
在web.xml中:
<context-param>
<param-name>javax.servlet.jsp.jstl.sql.dataSource</param-name>
<param-value>jdbc/shop1db</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud) 验证隐藏选项卡上的元素的经典问题.我已经阅读了一百篇包含复杂解决方法的帖子.有没有人有一个更简单,更优雅的解决方案,适用于一般案例?即没有专门针对每种形式编码?
HTML5承诺提供优雅的解决方案.但是Tabs开玩笑了......
谢谢
更多..?从Bootstrap示例.如果您有标记为"必需"的字段(HTML5验证),则验证将不适用于非活动(隐藏)选项卡.而且我相信其他javascript验证技术也会失败并带有标签.
我希望有人有一个很好的通用技术解决方案,不需要在每个页面上的代码.HTML5验证很好很干净 - 直到你添加标签...
它不会提交.但它不会给出错误......
<!-- Nav tabs -->
<ul class="nav nav-tabs">
<li class="active"><a href="#home" data-toggle="tab">Home</a></li>
<li><a href="#profile" data-toggle="tab">Profile</a></li>
<li><a href="#messages" data-toggle="tab">Messages</a></li>
<li><a href="#settings" data-toggle="tab">Settings</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="home">...</div>
<div class="tab-pane" id="profile">...
<input type="text" name="name" required>
</div>
<div class="tab-pane" id="messages">...
<input type="text" name="address" required>
</div>
<div class="tab-pane" id="settings">...</div>
</div>
Run Code Online (Sandbox Code Playgroud) 我在Windows 7 64位上使用Eclipse Kepler和Tomcat 7.
如果我清理项目并重新启动服务器,一切都很好.但是,如果我工作几分钟...就像编辑一个jsp ... Tomcat barfs以下...
它抱怨丢失的标签是页面布局的标签.没有其他令人兴奋的东西,除了它有一些jspf包括和内容页面也称为其他标签.但同样,没有什么令人兴奋
我不知道我是如何导致这一点的,因为事情编译并且最初运行良好.但是Tomcat似乎失去了对标签类的追踪.
如果我清理项目,它会恢复工作一段时间......
有任何想法吗?谢谢
HTTP Status 500 - Unable to compile class for JSP:
type Exception report
message Unable to compile class for JSP:
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: 33 in the jsp file: /folder/page.jsp
org.apache.jsp.tag.weblayout_002dmain_tag cannot be resolved to a type
30:
31:
32:
33: <tags:layout-main>
34: <jsp:attribute …Run Code Online (Sandbox Code Playgroud) 我有一个上传的servlet工作得很好,但留下了临时文件.我正在尝试使用part.delete()来清理它们,但它们并没有删除.
文档说容器会在GC执行时删除它们.但即使我等了一个小时并最终关闭了服务器,他们仍然在那里......
有什么诀窍?现在是Windows上的Eclipse Kepler和Tomcat 7.0.47.但生产将是Linux.
谢谢
代码大致浓缩:
@MultipartConfig(location = "C:/tmp",
fileSizeThreshold=1024*1024*10, // 10MB
maxFileSize=1024*1024*10, // 10MB
maxRequestSize=1024*1024*50) // 50MB
@WebServlet("/upload.do")
...
for (Part part : request.getParts()) {
String filename = getFilename(part);
if(!(filename==null)){
part.write("/elsewhere/"+filename);
part.delete();
} else {
out.println("skip field...");
}
}
Run Code Online (Sandbox Code Playgroud) 我在Centos 6上运行Tomcat 7/MySQL 5.6.是时候将数据库分离到另一台服务器了.保护Tomcat和后端MySQL服务器之间连接的最佳方法是什么?它是虚拟化的,我不想在共享网络上运行连接.
我正在考虑通过ssh进行隧道传输.SSL看起来很多工作.但是什么是"推荐"方法?
我在CentOS 6.5 64位和OpenJDK 1.7 64上运行Tomcat 7.0.53.
我偶尔会有几台服务器 - 比如每周随机一次 - Tomcat会优雅地关闭自己.我已经看了好几个月了,找不到原因.唯一的模式似乎是长时间没有任何事情,然后关闭.
以下是其中一个服务器的内存使用情况.大量的RAM免费.
total used free shared buffers cached
Mem: 2006 771 1234 0 176 281
-/+ buffers/cache: 313 1692
Swap: 2047 0 2047
Run Code Online (Sandbox Code Playgroud)
以下是Catalina.out中的一项活动.你可以看到它开始然后几个小时没有什么令人兴奋的事情.然后优雅地关闭自己,好像被告知.
我已经研究过这个死亡,并且无法对此进行处理.
有人可以为我提出行动计划吗?
谢谢
从Server.xml:
<Server port="-1" shutdown="__SHUTDOWN__">
Run Code Online (Sandbox Code Playgroud)
从Catalina.out:
Apr 28, 2014 5:34:50 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Valve} Setting property 'remoteIpProxiesHeader' to 'x-forwarded-by' did not find a matching property.
Apr 28, 2014 5:34:50 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler …Run Code Online (Sandbox Code Playgroud) 我已经和菜单争了一段时间了.我想要的是顶级菜单和侧面菜单.并且为了在移动设备上有用,两个菜单都需要折叠成可在手机上访问的内容.这有可能吗?或者我是否必须为不同的屏幕尺寸编写不同的解决方案?
谢谢
tomcat ×5
java ×3
jquery ×2
linux ×2
context.xml ×1
custom-tags ×1
eclipse ×1
go ×1
go-http ×1
html-email ×1
jakarta-mail ×1
javascript ×1
jsp ×1
mysql ×1
phantomjs ×1
server.xml ×1
servlet-3.0 ×1
servlets ×1
smtp ×1
tomcat7 ×1