怎么发送带附件的邮件

beijing_girl 2006-06-15 11:31:27
怎么发送带附件的邮件
...全文
164 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
iasky 2006-06-16
  • 打赏
  • 举报
回复
mark
beijing_girl 2006-06-16
  • 打赏
  • 举报
回复
;) 发多个附件也好啦,多谢大家
beijing_girl 2006-06-16
  • 打赏
  • 举报
回复
正确啦
还要问一下,怎么同时发送多个附件呢
beijing_girl 2006-06-16
  • 打赏
  • 举报
回复
怎么还是不行,我这么写的

$to = "**@126.com";
$from = "**@163.com";
$subject = "subject";
$attachment = "/www/logphp/f.xls";
$fileName = "f.xls";

$boundary = uniqid("");

# 生成邮件头
$headers = "From: $from
Content-type: multipart/mixed; boundary=\"$boundary\"";

# 打开文件
$fp = fopen($attachment, "r");
# 把整个文件读入一个变量
$read = fread($fp, filesize($attachment));

# 好,现在变量$read中保存的是包含整个文件内容的文本块。
# 现在我们要把这个文本块转换成邮件程序可以读懂的格式
# 我们用base64方法把它编码
$read = base64_encode($read);

# 现在我们有一个用base64方法编码的长字符串。
# 下一件事是要把这个长字符串切成由每行76个字符组成的小块
$read = chunk_split($read);

# 现在我们可以建立邮件的主体
$body = "--$boundary
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit

$body

--$boundary
Content-Type: application/vnd.ms-excel;
name=$fileName
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename=$fileName


$read

--$boundary--";

# 发送邮件
mail($to, $subject, $body, $headers);
aomeng 2006-06-16
  • 打赏
  • 举报
回复
如果是excel像这样,根据你的描述,估计是因为你的filename没有编码,所以客户端显示不出来。
还有可以检查是不是少了空行。
Content-Type: application/vnd.ms-excel;
name="xxx"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="xxx"
beijing_girl 2006-06-16
  • 打赏
  • 举报
回复
$attachment_type 的值怎么定义呢,我要发送的附件是EXCEL、.log、.txt?
beijing_girl 2006-06-16
  • 打赏
  • 举报
回复
谢谢wasuka(被奴役的食尸鬼),我用你的方法发邮件,标题旁边有附件图标,打开邮件怎么没显示附件呢?
beijing_girl 2006-06-15
  • 打赏
  • 举报
回复
我要做成定时运行脚本,不用提交表单怎么带附件发送呢?
wasuka 2006-06-15
  • 打赏
  • 举报
回复
<?php
echo "<form action='$PHP_SELF' enctype='multipart/form-data' method='post'>\n";
echo "<input type='text' name='from'><br>\n";
echo "<input type='text' name='to'><br>\n";
echo "<input type='text' name='subject'><br>\n";
echo "<input type='file' name='attachment'><br>\n";
echo "<textarea name='body'></textarea><br>\n";
echo "<input type='submit' name='send' value='Send'>\n";
echo "</form>\n";

# 如果用户已经按了"Send"按钮"
if ($send) {
$boundary = uniqid( "");

# 生成邮件头
$headers = "From: $from
Content-type: multipart/mixed; boundary=\"$boundary\"";

# 确定上传文件的MIME类型
if ($attachment_type) $mimeType = $attachment_type;
# 如果浏览器没有指定文件的MIME类型,
# 我们可以把它设为"application/unknown".
else $mimeType = "application/unknown";

# 确定文件的名字
$fileName = $attachment_name;

# 打开文件
$fp = fopen($attachment, "r");
# 把整个文件读入一个变量
$read = fread($fp, filesize($attachment));

# 好,现在变量$read中保存的是包含整个文件内容的文本块。
# 现在我们要把这个文本块转换成邮件程序可以读懂的格式
# 我们用base64方法把它编码
$read = base64_encode($read);

# 现在我们有一个用base64方法编码的长字符串。
# 下一件事是要把这个长字符串切成由每行76个字符组成的小块
$read = chunk_split($read);

# 现在我们可以建立邮件的主体
$body = "--$boundary
Content-type: text/plain; charset=iso-8859-1
Content-transfer-encoding: 8bit

$body

--$boundary
Content-type: $mimeType; name=$fileName
Content-disposition: attachment; filename=$fileName
Content-transfer-encoding: base64

$read

--$boundary--";

# 发送邮件
mail($to, $subject, $body, $headers);
}
?>
mynamesucks 2006-06-15
  • 打赏
  • 举报
回复
把标题内容啥的从数据库里取出来
把从表单上传的文件改为存在服务器上的文件
其他和楼楼楼上的一样啊
zeroleonhart 2006-06-15
  • 打赏
  • 举报
回复
我要做成定时运行脚本,不用提交表单怎么带附件发送呢?


--------------------------------------------

no submit??? how can you transmit the data of the mail to the mail server?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧