我有一个PHP脚本,它发送带有附加图像的HTML电子邮件.它工作得很漂亮,但是,我无法<img>在电子邮件正文中的标签中显示附件.调用附加文件postcard.png,服务器上的原始文件名为4e60348f83f2f.png.我试着给图像URL各种东西:cid:postcard.png,cid:4e60348f83f2f.png,postcard.png,和4e60348f83f2f.png.什么都行不通.
我认为我做错的关键部分在这里,因为这使它成为一个单独的附件而不是我可以使用的内联附件:
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="$fname" // i.e.: "postcard.png"
Run Code Online (Sandbox Code Playgroud)
我已经尝试将其更改为使用CID,但我真的不知道该怎么做,而且这根本不起作用:
Content-Transfer-Encoding: base64
Content-ID: <$fname> // i.e.: postcard.png
Run Code Online (Sandbox Code Playgroud)
这是完整的代码:(它基于来自php 页面中的注释的代码mail().)
<?php
$to = "recipient@email.com";
$email = "sender@email.com";
$name = "Namename";
$subject = "An inline image!";
$comment = "Llookout <b>Llary</b> it's <br> the <b>Ll</b>andllord!<br><img src='cid:postcard.png'><br><img src='cid:4e60348f83f2f.png'><img src='postcard.png'><br><img src='4e60348f83f2f.png'>";
$To = strip_tags($to);
$TextMessage =strip_tags(nl2br($comment),"<br>");
$HTMLMessage =nl2br($comment);
$FromName =strip_tags($name);
$FromEmail =strip_tags($email);
$Subject =strip_tags($subject);
$boundary1 =rand(0,9)."-"
.rand(10000000000,9999999999)."-" …Run Code Online (Sandbox Code Playgroud) [ 此问题的简化版本: ]
为什么iFrames有时会拒绝打印?例如,点击print preview这两页:
在打印预览中,iFrame在第一个示例中可见,但在第二个示例中隐藏.第一个和第二个 iFrame 之间的唯一代码差异是CSS属性()已添加到第二个示例中的iFrames.margin: 20px;
[ 长(原版)版: ]
我正在构建一个预览/打印页面,它汇集了一堆引用自己的样式表和javascript文件的独立HTML文件.
我们的想法是,所有文件都显示在iFrames中进行预览,然后在打印时,每个iFrame(可能会跨越多个页面)打印出来就像是它自己的文档一样.
但是,当我打印(或打印预览)时,iFrames既不显示内容,也不打印第一页,截断iFrame的剩余页面.
在我制作多个页面之前,iFrames打印(并打印预览)就好了:
这种行为的原因是什么?
此循环(请参阅jsfiddle)尝试将<span>标记附加到容器五次.但它只做了一次.为什么?
var myArr = [0,1,2,3,4];
var $span= $('<span></span>');
for (var i = 0; i < (myArr.length); i++) {
$('.contain').append($span);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery Validation的remote方法来检查系统中是否已存在用户名.如果用户存在,脚本将返回.does_user_exist.php1
$registration.find(".username").each(function() {
var $this = $(this);
$this.rules('add', {
remote: {
url: "does_user_exist.php",
type: "post",
dataType: "json",
data: {uname: function(){ return $this.val(); } },
async: false,
success: function (data) { //returns 1 if user exists
if (data) {
console.log("false!");
return "Sorry, that user already exists." //doesn't work
//return false; //doesn't work
//return data; //doesn't work
//return {"string"}; //doesn't work
//return {0: "string"};//doesn't work
} else {
console.log("true!");
return true;
}
}
},
messages: …Run Code Online (Sandbox Code Playgroud) 当用户在contenteditable元素中插入换行符时,浏览器会将HTML 插入元素中。
以下是您[Enter]在各种浏览器中点击时得到的结果:
IE: <p></p>
Chrome: <div><br></div>
Safari: <div><br></div>
Firefox: <br />
Opera: <br />
Run Code Online (Sandbox Code Playgroud)
(使用此 JSFiddle 演示自行测试。)
当用户没有插入任何 HTML 时,有没有办法让浏览器不插入 HTML?当然,我可以只使用
<textarea></textarea>
Run Code Online (Sandbox Code Playgroud)
...这确实与我想要的非常相似,但是,我不想要严格的“纯文本”输入,因为我将使用 Javascript 在可编辑元素中添加和修改 HTML。
我考虑过在用户键入时不断剥离所有 HTML,只允许保留带有我创建的特殊类的 HTML。然而,这似乎不是一个很好的解决方案。是否有类似wrap='soft'或其他方式说“停止编写 HTML 并将其放入我的元素中!”
我不太熟悉.NET,但是我想将一个简单的值(1到1000之间的数字,这是特定的高度div)保存到viewstate并在更新面板重新加载时检索它(在标记中)某处或使用javascript).最简单的方法是什么?
这个页面给了我以下代码:
string strColor;
if (Page.IsPostBack)
{
// Retrieve and display the property value.
strColor = (string)ViewState["color"];
Response.Write(strColor);
}
else
// Save the property value.
ViewState["color"] = "yellow";
Run Code Online (Sandbox Code Playgroud)
但是,我不清楚在何处或如何访问示例strColor.
由于这是在代码背后,Response.Write甚至会吐出那些代码?我尝试这段代码时找不到它.我如何使用javascript设置该值,而不是在后面的代码中设置它?
我在one()事件处理程序上使用jQuery 方法触发一次然后取消注册自己.就像是:
$(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ });
Run Code Online (Sandbox Code Playgroud)
然后一些ajax(实际上,.net回发)重置了大部分页面(没有重新加载),我想再次设置事件处理程序.有没有办法重新设置one()事件处理程序再次处于活动状态?以这种方式手动重新触发它不起作用,显然:
$(".main .resizeBar").trigger("mousedown");
Run Code Online (Sandbox Code Playgroud) 如何编写除了给定字符串("ABCD")之外的所有内容的Javascript正则表达式?
喜欢的东西/[^ABCD]/,除了我不想匹配的一切,是不是字母A,B,C或D.我想匹配的一切,是不是字符串"ABCD".
基本上我希望这发生:
var myStr = "ABCA ABCB ABCD BCD ABC"
myStr.replace(/!(ABCD)/g,'') // returns ABCD
Run Code Online (Sandbox Code Playgroud) 我在每个页面上都有一个包含许多jQuery事件处理程序的站点,所有这些都在一个大的.js文件中.
这意味着对于任何页面,大多数事件处理程序都是针对不存在且根本不会使用的HTML.
这会是我的表现吗?
编辑:作为一个例子,大多数事件处理程序将完成这样的事情:
$(".page").on("click", ".notes .add", function(){ ... });
Run Code Online (Sandbox Code Playgroud)
因为.on()适用于新元素,它是否会浪费处理能力,或者只有在ajax调用之后DOM发生变化时才会生效?所以为了进一步澄清我的问题,我想我应该分解为两部分.
我正在Javascript 上观看Crockford - 第三幕:在大约 41 分 26 秒时发挥终极作用。他屏幕上的代码arguments.slice()以一种导致我出错的方式使用。
function curry(func){
var args = arguments.slice(1);
...
}
Run Code Online (Sandbox Code Playgroud)
他是这样解释的:
我将首先得到一个参数数组,除了第一个,因为第一个是一个函数,我不需要那个。在这种情况下,我假设我在 ES5 上,所以我没有做可怕的
Array.prototype.apply()把戏。
问题是运行会arguments.slice()导致此错误:
Uncaught TypeError: arguments.slice is not a function
我正在测试肯定有 ES5 的现代浏览器!我可以让代码工作的唯一方法是,如果我使用一些“可怕的”技巧,(如他所称),例如Array.prototype.slice.apply(arguments, [1])或[].slice.call(arguments, 1);.
他只是误会了吗?他的幻灯片有错别字吗?为什么arguments.slice()在我的 ES5 浏览器中不起作用?
jquery ×4
javascript ×2
append ×1
asp.net ×1
attachment ×1
browser ×1
c# ×1
css ×1
ecmascript-3 ×1
ecmascript-5 ×1
email ×1
function ×1
html ×1
html-email ×1
iframe ×1
inline ×1
php ×1
printing ×1
regex ×1
string ×1
viewstate ×1
webforms ×1