【发布时间】:2012-07-23 11:33:37
【问题描述】:
有没有一种方法可以使用 mysql 发送带有附件的电子邮件?目前我可以使用 mysql 发送电子邮件,但没有附件。 我需要包含一个来自硬盘的 docx 附件。
我创建了一个 eml 文件并将其发送到 IIS (Inetpub),以便它可以获取电子邮件。这是电子邮件通知的工作代码:
SET @sqlString = CONCAT("SELECT 'To:test@email.com', ",
"'From: test@email.com', ",
"'Subject: test', ",
"'\r\n'",
"'test'",
"INTO OUTFILE 'C:/Inetpub/mailroot/Pickup/mail_", CAST(RAND() * (100000 - 1) + 1 AS CHAR(64)), ".eml' FIELDS TERMINATED BY '\r\n' ESCAPED BY ''");
PREPARE stmt FROM @sqlString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
现在我需要一个附件。这是我尝试的努力...
SET @sqlString = CONCAT("SELECT 'To:test@email.com', ",
"'From: test@email.com', ",
"'Subject: test', ",
"'Content-Type: application/octet-stream; name=\"C:/text.docx\"',",
"'Content-Transfer-Encoding: base64',",
"'Content-Disposition: attachment; filename=\"C:/text.docx\"',",
"'\r\n'",
"'test'",
"INTO OUTFILE 'C:/Inetpub/mailroot/Pickup/mail_", CAST(RAND() * (100000 - 1) + 1 AS CHAR(64)), ".eml' FIELDS TERMINATED BY '\r\n' ESCAPED BY ''");
PREPARE stmt FROM @sqlString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
但它只创建一个 docx 文件并没有获取正确的文件。它还删除了正文。
是否有可能的方法来附加文件。非常感谢您的帮助
【问题讨论】:
-
天哪...不要这样做。 MySQL 没有 base64 编码功能。你不想自己写一个。请改为在客户端应用程序中执行此操作。手动生成 mime 电子邮件也是一种严重的痛苦。
-
@Marc B 感谢您的回复和关注。但我需要安排电子邮件通知。
-
正确的编程语言可以比您通过 SQL 查询更容易地构建/发送电子邮件,并且还可以进行安排。同样,不要在数据库中这样做。
-
@MarcB 感谢您的建议,我想我必须真正坚持基础,不要滥用 mysql 呵呵。我现在使用 php 处理电子邮件。虽然我的存储过程保存了电子邮件的重要细节(收件人、发件人、主题、消息、路径等)
标签: mysql email iis stored-procedures email-attachments