Как я могу прикрепить файл к письму с URL? - PullRequest
2 голосов
/ 11 июля 2011

Я отправляю электронное письмо, используя тег cfmail, и пытаюсь прикрепить PDF-файл с URL:

<cfmail to="me@mydomain.com" from="you@yourdomain.com" subject="Subject" type="html">
   <cfmailparam file="http://myfilelocation/pdfFile.pdf">
   Body of the email
</cfmail>

Однако это не работает. Без тега cfmailparam электронное письмо успешно отправляется. Если я перехожу на http://myfilelocation/pdffile.pdf, я вижу документ PDF, который я пытаюсь прикрепить. Я делаю что-то неправильно? Как я могу прикрепить документ PDF к электронному письму с URL ?

Ответы [ 4 ]

3 голосов
/ 12 июля 2011

Если вы отправляете электронное письмо в формате HTML, почему бы просто не дать ссылку на PDF-файл напрямую? Это позволяет использовать электронные письма меньшего размера и дает возможность обновить PDF-файл даже после его отправки.

2 голосов
/ 11 июля 2011

cfmailparam file должно указывать на местоположение на вашем сервере. Этот файл затем прикрепляется к электронному письму:

<cfmail to="me@mydomain.com" from="you@yourdomain.com" subject="Subject" type="html">
<cfmailparam file="d:\websites\mysite\resources\pdf1.pdf">
   Body of the email
</cfmail>
1 голос
/ 11 июля 2011

Вы можете использовать CFHTTP для извлечения вашего файла на ваш сервер и getTempFile () || getTempDirectory () для временного хранения этого файла и, наконец, использования CFMAILPARAM для прикрепления этого файла.

Edit:

<cfset tempFile = getTempDirectory(getTempFile()) />
<cfhttp url="http://myfilelocation/pdfFile.pdf" method="get" file="#tempFile#"></cfhttp>

<cfmail to="me@mydomain.com" from="you@yourdomain.com" subject="Subject" type="html">
   <cfmailparam file="#tempFile#">
   Body of the email
</cfmail>

Не проверено

0 голосов
/ 06 октября 2017

Ваш код будет хорошо работать только для текстовых файлов. Для других файлов нам нужно преобразование данных. Смотрите ниже:

<cfhttp method="get" url="http://myfilelocation/pdfFile.pdf">
<!---conversion--->
<cfif IsSimpleValue(cfhttp.Filecontent)>
    <cfset content = cfhttp.Filecontent>
<cfelse>
    <cfset content = cfhttp.Filecontent.toByteArray()>
</cfif>

И cfmailparam вроде:

<cfmailparam file="#fileNameOfYourChoice#" type="#cfhttp.Mimetype#" content="#content#" />

Это работает со специальными URL-адресами (например: http://myfilelocation/pdfFile.pdf?querystring=1 или http://myfilelocation/notPdfFileName/), а также позволяет нам называть файл так, как нам нужно

...