小编bre*_*ine的帖子

如何使用PHP发送带有内联附加图像的HTML电子邮件

我有一个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)

php email inline attachment html-email

5
推荐指数
1
解决办法
3万
查看次数

无法打印iFrame

[ 此问题的简化版本: ]

为什么iFrames有时会拒绝打印?例如,点击print preview这两页:

  1. http://fiddle.jshell.net/gJDv4/1/show/
  2. http://fiddle.jshell.net/gJDv4/2/show/

在打印预览中,iFrame在第一个示例中可见,但在第二个示例中隐藏.第一个第二个 iFrame 之间的唯一代码差异是CSS属性()已添加到第二个示例中的iFrames.margin: 20px;


[ 长(原版)版: ]

我正在构建一个预览/打印页面,它汇集了一堆引用自己的样式表和javascript文件的独立HTML文件.

我们的想法是,所有文件都显示在iFrames中进行预览,然后在打印时,每个iFrame(可能会跨越多个页面)打印出来就像是它自己的文档一样.

但是,当我打印(或打印预览)时,iFrames既不显示内容,也不打印第一页,截断iFrame的剩余页面.

在我制作多个页面之前,iFrames打印(并打印预览)就好了:

这种行为的原因是什么?

css browser printing iframe

5
推荐指数
1
解决办法
4508
查看次数

为什么这只附加一次?

此循环(请参阅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 append

5
推荐指数
1
解决办法
79
查看次数

来自jQuery Validate远程的错误响应无法正常工作

我正在使用jQuery Validationremote方法来检查系统中是否已存在用户名.如果用户存在,脚本将返回.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)

jquery jquery-validate

5
推荐指数
1
解决办法
1万
查看次数

如何防止浏览器将 HTML 插入 contenteditable 元素

当用户在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 并将其放入我的元素中!”

html contenteditable richeditabletext

5
推荐指数
1
解决办法
6922
查看次数

将值保存到viewstate并从中读取

我不太熟悉.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设置该值,而不是在后面的代码中设置它?

c# asp.net viewstate webforms

4
推荐指数
1
解决办法
2万
查看次数

重置jQuery one()以便它再次触发

我在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)

jquery

4
推荐指数
1
解决办法
6532
查看次数

正则表达式匹配任何不是字符串"ABCD"的东西

如何编写除了给定字符串("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)

javascript regex string

3
推荐指数
1
解决办法
1326
查看次数

我是否应该担心附加许多不需要的事件处理程序/监听器?

我在每个页面上都有一个包含许多jQuery事件处理程序的站点,所有这些都在一个大的.js文件中.

这意味着对于任何页面,大多数事件处理程序都是针对不存在且根本不会使用的HTML.

这会是我的表现吗?

编辑:作为一个例子,大多数事件处理程序将完成这样的事情:

$(".page").on("click", ".notes .add", function(){ ... });
Run Code Online (Sandbox Code Playgroud)

因为.on()适用于新元素,它是否会浪费处理能力,或者只有在ajax调用之后DOM发生变化时才会生效?所以为了进一步澄清我的问题,我想我应该分解为两部分.

  1. 如果有表演ding,什么时候会发生?(总是,在任何情况下,仅在DOM上更改,仅在加载时).
  2. 叮叮当然要担心吗?我该如何测量?如果有一千个这样的听众,那么会在几秒,几毫秒,几微秒内测量叮?我知道我可以加载页面并看看它的"感觉"但是我想知道如果我在开始之前构建了整个错误的东西!

jquery event-handling javascript-events

2
推荐指数
1
解决办法
224
查看次数

arguments.slice() 应该在 ES5 中工作吗?

我正在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 浏览器中不起作用?

javascript function ecmascript-5 ecmascript-3

2
推荐指数
1
解决办法
1535
查看次数