CFMAIL w/attachment
I'm using a simple form to email a text file that I've used
before with no problems but for some reason it's not going through.
Either the email goes through without the attachment or doesn't go
through at all. Should I be be using cfmailparam instead?
Yes you should use the cfmailparam tag to send the file
<CFMAILPARAM FILE="#form.file#">
It looks as though you may need to upload the file first
before sending.
<cffile action="upload"
destination="c:\attachmentsfolder\" nameconflict="MAKEUNIQUE"
fileField="form.file">
then you'd use the mailparam like so:
<CFMAILPARAM
FILE="c:\attachmentsfolder\#cffile.ServerFileName#.#cffile.ServerFileExt#">
the cffile. scope will be available after the <cffile
action="upload" takes place
Similar Messages
-
I want to dynamically attach a document and send via cfmail.I
use various queries to get the recipent names, and unique id info,
then retrieve the document that corresponds.
One cfmail documentation says to use cfparam inside cfmail
and specifiy the full path. Another says to use the mimeattach
attribute with the full path.
This is where I am having the problem. My document
name/variable from my query is #qryName.document#.
How do I set this up with the path, in either cfparam or
mimeattach ?I understand your code, but I still cannot seem to get the
correct path.
I use this query to find th file that I want as an
attachement to the cfmail :
<cfquery name="qryName" datasource="dbname">
select
uploadFileName
from tableName
where docNo = '#form.DocNo#'
</cfquery>
So the file that was uploaded with this docNo is stored in a
variable named uploadFileName in the specifield table.
What is the full path that I would setup in cfmailparam so
that this documant is an attachemetn in cfmail ? -
I set up a form that emails the form results to an email
address. It also has an option to attach a file.
My problem is that when the email is received the attachment
has been turned into a .tmp file. How can I get it to keep its
original file extension so that the receiver doesn't have to guess
the file type in order to open it.
<cfmail to="[email protected]" from="#FORM.email#"
subject="Web Site Email" mimeattach="#FORM.uploadfile#">
</cfmail>
Any help is greatly appreciated.OK if you use a file upload form then the file is uploaded by
the web server to to a temporary location, this is why the filename
you have is a .tmp file. If on the action page for the file upload
you use <cffile action="upload" .../> then you can give the
file the correct name and extension.
the next thing you need to understand is that when you send
an email with cfmail, all you are doing is putting an email in the
queue for your email server. So when you attach a file to an email
you must make sure that the file is still there when the mail
server tries to send the email as that is the point where it
attaches the file.
It will stay on your server until you do something about it,
if this is not the intended functionality then you could use
cfschedule to remove all files in a folder older than a few hours
or even a day to be on the safe side.
In answer to your question about is it accessible to other
people? Well if it is in your web root and someone can guess the
URL then yes, but these files do not need to be saved in the
webroot if they are only to be emailed, so you can protect them by
saving them elsewhere. Hope that helps! -
Cfmail/cfmailparam attachment encoding
When a text file is attached to an email, cfmail attempts to determin the mime type of the file and encodes it. This alters the content of the file somewhat. As best I can tell it is at least inserting line breaks.
Is there a way to attach files that are not encoded or altered in any way?
Thanks for any help.This will happen at the recipient's end depending on the mail
server/client they use ... you could send a pdf from your desktop
to the same recipient and it will happen with that too.
It could be a security reflex that it changes the file to a
non-binary format if it is not trusted or seems to be coming from a
questionable source.
A number of the government servers seem to do that - no idea
why, but renaming the file at the recipient's end generally allows
it to open properly.
Nothing you do in your code is going to change that.
*** If you are storing the file on the server, you may want
to include a line in the message that gives them a URL if the
attachment can not be viewed properly. -
Attaching generated excel file in cfmail
Hi,
I've attached the code in which I've generated an excel file
from my data, which the user can then open/save on their PC. I now
want to attach this excel file to an email (using cfmail) and send
it (the task will then become scheduled).
How do I save rather than output the excel file?
KatieHi,
Have a look at the following tags:
1)
<cfsavecontent> to generate a variable from your
tab-delimited content
<cffile action = "write"> to generate a temp file with
your content
<cfmail> and attach that file to your email
or
2)
<cfsavecontent>
<cfmail>,<cfmailpart> to attach the variable
directly to the email without creating a temp file first (have not
tried that myself)
cheers,
fober -
Cfmail attachments not working
So I have a web page that...
1 Generates an excel file.
2 Saves the excel file to my webserver.
3 Sends an email with the excel file attached.
If the user opens the email via desktop outlook the attached
excel file will open and display just fine. If the user opens the
email via web outlook the attachment won't open. I have no idea if
this is a coldfusion problem our an outlook problem. Does anyone
have any idea's what would cause this to happen?
ThanksIt opens fine when I double click it on the server. The
correct tag is
<cfsavecontent variable="mypage">
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="
http://www.w3.org/TR/REC-html40">;
<head>
<meta http-equiv=Content-Type
content="application/vnd.ms-excel; charset=windows-1252">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 9">
<link rel=File-List
href="./headcountest_files/filelist.xml">
<link rel=Edit-Time-Data
href="./headcountest_files/editdata.mso">
<link rel=OLE-Object-Data
href="./headcountest_files/oledata.mso">
Then my table that is getting output
</cfsavecontent>
<cfset mypath =
"C:\mypath\Excel\itinerary_#uname#.xls">
<cffile action="write" file="#mypath#"
destination="C:\mypath\Excel" output="#mypage#">
This creates the excel file and saves it to my webserver.
I then do my <cfmail> and attach the file that I just
created. The metatags tell it to create the excel file. -
Cfmail mulitiple attachments?
This isn't working... please advise. I need to attach
mulitiple documents.....
<cfmail to="#t.email#"
subject="Purchase"
from="[email protected]"
password="hdfd"
username="purchase.request"
cc=""
type="html"
server="mail2.corp.org"
mimeattach="d:\coldfusion
applications\pages\onlineforms\purchaserequest\Purchase Order
Request-#session.purchaserequestid#.pdf"
> <cfmailparam file =
"D:\filespload\#session.filename1#" >
</cfmail>You can use multiple cfmailparam tags inside your cfmail to
attach multiple files. You might try removing the mimeattach
attribute and use cfmailparam for all your attachments. -
Fill out pdf online, then email
We want new hires to click a link on our website where a pdf comes up. They fill out the fields in the pdf and then the pdf gets emailed to HR. It would also work if I could somehow save that filled-out pdf to the server. I could have the form submit to another page that triggers cfmail and attaches the pdf. Just can't get the pdf saved to the server after having it filled out. Any ideas?
You can do it using the cfdocument tag. I haven't used it yet, but this Adobe help page seems to have a pretty good explanation.
http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_d-e_05.html -
CFMail Attachment Issue (410 character limit)
My company is in the process of upgrading from CF5 to CFMX7
(v7.0.2). While testing the new version our test environment, I've
discovered an issue (that didn't exist in CF5) regarding email
attachments. I've scoured the internet looking for users who might
have run into this issue and haven't found any.
Here's the problem that shows up when using CFMX7. Emails
that have attached files that have lines of code that are longer
than 410 characters per line have the lines broken apart with a
newline character.
So for example if code in a file originally looked like this,
<font face='courier new' size=-2>
 LIFE MED (line
continues out to over 600 chacters)...
</font>
The received file would have code that looked like this,
<font face='courier new' size=-2>
 LIFE MED (line
continues out to just 410 chacters, then breaks to a new line)...
bsp;  LIFE
</font>
Notice that the non-breaking space characters starting the
second line have been chopped off.
This causes an issue because the files we are attaching to
the emails are bills (formatted in html) that uses a lot of
non-breaking space ( ) characters for formatting purposes.
Most of the lines of code are greater then 410 characters wide, and
once the the characters start to get broken apart, they
end up displaying in a browser.
Things I've tried that haven't helped.
1) Changing the Default CFMail Charset from UTF-8 to US-ASCII
2) Using the cfmailparam tag instead of the mimeattach
attribute
3) Applied hot fix hf702-65414 (which was for an issue
regarding email spooling)
Does anyone know how I would prevent the line break issue in
CFMX7?
I figured I'd ask around in a few newsgroups before we
started spending money on support from Adobe.
Thanks,
Wayne BarcaIf the attached file doesn't have to be interactive, how
making it a PDF? -
I have a function which creates some xls-files and pack it
into a zip-archive, the created file is named 1234.zip and is saved
at the server. This function works correct.
After that the created file should be send by cfmail but when
I receive the mail the attached file is named
att23423.att or similar. The file itself is correct, I can
open it with winZip but I also need the correct filename for the
attachment.
I run the same function for sending xls- or pdf-files and
this works!
Any Ideas?? I would appreciate any suggestion.
I use CF MX7.02 and here is a snippet of the relevant code:
<cfmail to="#sender#" bcc="#receiver#" from="#sender#"
subject="#subject#" server="#application.smtp_server#"
port="#application.smtp_serverport#" type="HTML">
...<cfmailparam file="#attach_file_name#"
type="application/zip">...
</cfmail>Hi Guido,
There is not a very complex configuration required for attachments. You have to follow the general configuration steps along with the instructions mentioned at below link -
http://www.b2bgurus.com/2008/11/attachment-feature-in-ebms-using-oracle.html
Regards,
Anuj -
I am trying to include an attachemnt in cfmail, for the first time.
Reviewing some of the online documentation and techniques, I found this easy one - I could not get it to work using variables so I hardcoded and it works.
<cfmail to=[email protected]
from="#form.customerEmail#"
subject="Garage Sale
mimeattach="E:\wwwroot\folder1\forms\uploadFolderName\fileName.gif"
type="html">
A couple of questions :
The email has a body of text and it adds the atttachment before the text. What do I have to do to get the attachement after the text ?
Also, my form contains this : <td>Attachment: </td><td><input type="file" name="attachmentFile"></td>
Instead of hardcoding, how do I get the variable in there ? I tried to use the code below but it kept blowing up in the destination part (what I have in there now, I was just trying different things)
<cffile action="upload"
filefield="attachmentFile"
destination="#uploadFile##attachmentfile#"
nameconflict="makeunique">I was able to insert the attachment into the table using your suggestion, #cffile.serverfile#.
Regarding the display of the attachment inside cfmail, it is on top instead of on the bottom after the text. Here is a snippet of the cfmail code :
<tr>
<td class="TitleText" >Shipment Number:</td><td class="TitleText" >#form.shipmentNumber#</td>
</tr>
<tr>
<td class="TitleText" >Date Submitted:</td><td class="TitleText" >#dateformat(now(), "mm/dd/yyy")# #timeformat(now(), "hh:mm:ss tt")#</td>
</tr>
<tr>
<td class="TitleText" >Type of Issue:</td><td class="TitleText" >#qryGetIssuesType.issueType#</td>
</tr>
</table>
<p align="justify">
#form.comments#
</p>
<p>
<cfmailparam file="#cffile.serverDirectory#\#cffile.serverFile#" />
</p>
</cfmail>
This should display the Shipment number, date submitted, etc, then the attachment ? The actual output has the atttachemement first, then the shipment number, date submitted, etc...
I want the attachement as the last item in the cfmail. -
CFMAIL Attached vs. embedded (cfmail, multipart/mixed)
I want to send a mail which has a PDF attachment and an embedded image. When I send them both with cfmailparam (with correct disposition) they arrive in the email as attachments in the body...you don't get the little email paperclip attachment icon.
When I tried using mimeattach for the PDF it did work!...but the image denoted with cfmailparam also came through like that. So I looked the email headers of both and the good one was Content-Type: multipart/mixed; while the bad one was "multipart/related".
So how can I make cfmailparam send it as multipart/mixed? (if that's even the right question...maybe I should stick with mimeattach and do something else?)
Thanks Folks' - RandyI never found a solution using cfmail. I had to resort to java instead.
I have all of my file information (including content) in a query called qFiles and loop through that in the code below.
<cfscript>
// config will stay this way
emailServer = serverAddressHere;
emailServerAccount = "";
emailServerPwd = "";
// set email variables
vSentFrom = sentFromEmailHere;
vSubjectText = subjectHere;
recipientsTo = listToArray( SentToListHere );
recipientsCC = listToArray( CCListHere );
recipientsBCC = listToArray( BCCListHere );
// set javamail properties
props = createObject("java", "java.util.Properties").init();
props.put("javax.mail.smtp.host", emailServer);
// get static recipient types
recipientType = createObject("java", "javax.mail.Message$RecipientType");
// create the session for the smtp server
mailSession = createObject("java", "javax.mail.Session").getInstance(props);
// create a new MIME message
mimeMsg = createObject("java", "javax.mail.internet.MimeMessage").init(mailSession);
// create the to and from e-mail addresses
addrFrom = createObject("java", "javax.mail.internet.InternetAddress").init(vSentFrom);
for (cfIdx = 1; cfIdx LTE arrayLen( recipientsTo ); cfIdx++)
addrTo[cfIdx] = createObject("Java", "javax.mail.internet.InternetAddress").init( recipientsTo[cfIdx] );
// add a recipient
mimeMsg.addRecipient(recipientType.TO, addrTo[cfIdx]);
if(ArrayLen(recipientsCC)){
for (cfIdx = 1; cfIdx LTE arrayLen( recipientsCC ); cfIdx++)
addrCC[cfIdx] = createObject("Java", "javax.mail.internet.InternetAddress").init( recipientsCC[cfIdx] );
// add a recipient
mimeMsg.addRecipient(recipientType.CC, addrCC[cfIdx]);
if(ArrayLen(recipientsBCC)){
for (cfIdx = 1; cfIdx LTE arrayLen( recipientsBCC ); cfIdx++)
addrBCC[cfIdx] = createObject("Java", "javax.mail.internet.InternetAddress").init( recipientsBCC[cfIdx] );
// add a recipient
mimeMsg.addRecipient(recipientType.BCC, addrBCC[cfIdx]);
// build message
// set who the message is from
mimeMsg.setFrom(addrFrom);
// set the subject of the message
mimeMsg.setSubject(vSubjectText);
// create multipart message: only needed if you're including both plain/text and html
// or using attachments
multipart = createObject("java", "javax.mail.internet.MimeMultipart").init();
// specifies that the message contains both inline text and html, this is so that
// images given a cid will show up when rendered by the e-mail client
multipart.setSubType("mixed");
// create html text multipart
oHtml = createObject("java", "javax.mail.internet.MimeBodyPart").init();
// add the html content (the setText() method shortcut/only works for "plain/text")
oHtml.setContent( emailContentHTML, "text/html");
// add the body part to the message
multipart.addBodyPart(oHtml);
// loop over files to attach to the email
for ( intRow = 1 ; intRow LTE qFiles.RecordCount ; intRow = (intRow + 1))
// set file info to vars
fileContent = qFiles["fileContent"][intRow];
fileMimeType = qFiles["mimeType"][intRow];
fileName = rereplace( qFiles["filename"][intRow] , '(?!\.[^.]*$)\W' , '' , 'all' );
if(len(fileName) > 50)
{fileName = mid(fileName,1,44) & right(fileName,find('.',reverse(fileName)));}
// attach an inline binary object
att = createObject("java", "javax.mail.internet.MimeBodyPart").init();
// create an octet stream out of the binary file
os = createObject("java", "org.apache.axis.attachments.OctetStream").init(fileContent);
// we now convert the octet stream into the required data source. using an octet stream
// allows us pass in any binary data as a file attachment
osds = createObject("java", "org.apache.axis.attachments.OctetStreamDataSource").init("", os);
// initialize the data handler using the data source
dh = createObject("java", "javax.activation.DataHandler").init(osds);
// pass in the binary object to the message--javamail will handle the encoding
// based on the headers
att.setDataHandler(dh);
// define this binary object as a PDF
att.setHeader("Content-Type", fileMimeType);
// make sure the binary data gets converted to base64 for delivery
att.setHeader("Content-Transfer-Encoding", "base64");
// specify the binary object as an attachment
att.setHeader("Content-Disposition", "attachment");
// define the name of the file--this is what the filename will be in the e-mail client
att.setFileName(fileName);
// add the body part to the message
multipart.addBodyPart(att);
//end loop through qFiles
// place all the multi-part sections into the body of the message
mimeMsg.setContent(multipart);
// in this section we'll build the message into a string. you could dump
// the string to a file in most SMTP server's queue file for delivery
// this is exactly what would be pass to the SMTP server
// create a bytearray for output
outStream = createObject("java", "java.io.ByteArrayOutputStream");
// create a budder for the output stream
outStream.write(repeatString(" ", 1024).getBytes());
// save the contents of the message to the output stream
mimeMsg.writeTo(outStream);
// save the contents of the message to the sMailMsg variable
sMailMsg = outStream.toString();
// reset the output stream (for stability)
outStream.reset();
// close the output stream
outStream.close();
// create a transport to actually send the message via SMTP
transport = mailSession.getTransport("smtp");
// connect to the SMTP server using the parameters supplied; use
// a blank username and password if authentication is not needed
transport.connect(emailServer, emailServerAccount, emailServerPwd);
// send the message to all recipients
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
// close the transport
transport.close();
</cfscript> -
Cfmail: attach file with cfmailparam?
Greetings
I created a form several years ago that allows users to submit maintenance requests. They check a box if they want a receipt sent to their own email.
The requests do not get captured in a DB- simply sends to email.
This all has been working fine- I am now attemping to add document attachment capability- I am obviously not using the correct method.
The form itself has:
<cfform action="request_action.cfm" method="post" name="detail" id="detail" enctype="multipart/form-data">
etc. etc.
Upload File or Sceenshot if neccessary: <cfinput name="file_upload" type="File" required="no" size="40"></cfform>
The request_action.cfm has:
<cfmail to=
etc. etc.
<cfif isDefined("Form.file_upload") >
<cfmailparam
contentID = "file_upload"
disposition = "attachment"
file = "#Form.file_upload#"
type ="application/msword,application/docx,application/pdf,application/octet-stream,applicatio n/msword,text/plain,binary/octet-stream, image/pjpeg, image/gif, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-word.document.12, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"></cfif>
</cfmail>
When I run without the above code, everything works. When I run with the cfmailparam, it sends a strange receipt with no content?
Thanks for any help with this
NormanYou didn't post any code that shows that you actually uploaded the file to your server.
-
I'm trying to send the email from my AOL account... it works
fine hosted locally... and doesnt when I upload it to my GoDaddy
hosted account... Is there some GoDaddy setting I need to use... or
if I have to use a GoDaddy created email address... what settings
do I use... I'm not much of a programmer... so please explain like
ur talking to a 2-year old.
<---THE CODE IS BELOW --->
<CFMAIL FROM="[email protected]"
TO="[email protected]" SUBJECT="Survey Request Submitted !"
server="smtp.aol.com" username="harryleroybrown" password="doctor"
PORT="587">
There has been a form submission on your site, here's what
they had to say:
Sender name: #form.requesting_company#
Sender email: #form.Requestor_Email_Address#
Address (1st location only):
#form.location1_address_street#,
#form.location1_address_city#,#form.location1_address_state#
Message Sent: #DateFormat(now(), 'mmmm dd, yyyy')#
#TimeFormat(Now(), 'hh:mm:ss tt')#
</CFMAIL>Highly unlikely you are going to be able to do exactly what
you want to do.
1) AOL will probably disallow a connection remotely like this
2) GoDaddy might not allow a connection out like this
3) GoDaddy will probably not allow you to send an email out
from their servers with an AOL address
Good idea regarding removing the username, password, server
and port. Hopefully you have a godaddy email account attached to
your hosting that you can try first. Then try to get more
complicated. -
Attach page content as pdf in email
Thanks for all who answer this thread.
I am using this syntax to send email from a web page....
<cfset subject = "Application Name">
<a
href="mailto:?subject=#urlEncodedFormat(e_subject)#">Email
page</a>
i know, how to create page content in pdf...
How can i attach page content pdf to this mail? is that
possible?.
OR
what is best way to send page content PDF as email.....
user want to type some info in body of email.....
thanksUse cfsavecontent to generate your page content.
Use cfdocument to create the pdf file
Use cfmail and cfmailparam to send it as an email
attachment.
Maybe you are looking for
-
How to find out the user name and email address from SAP user id?
Hi experts, In sto3n I find out the the user id with most navigations. I like to know his name or email address to contact him. Which table stores the user details? how to do it? Thanks in advance. Sharat.
-
Contains clause in Interactive report search of a clob column
Hi, I am using APEX Version 4.2.4.00.08 How can an interactive Report use the contains clause when searching a clob column so that it uses the CONTEXT index? Thanks Chandra.
-
Hello- I recently upgraded to OS Mountain Lion on my iMac and cannot download the most current version of Adobe Flash Player. I even uninstalled the old Flash version but this did not resolve the issue. Could somebody please assist? Thank you.
-
Absence of "Prompt Background Color property" in Property Palette
The "Prompt Background Color property" is specified in Form builder help topics but it is not present in the Property Palette. How can we set it at design time ? null
-
Could someone explain the cause of the recent print problem (in lay terms)?
I am more curious than anything. It affected me on a R1800. Seems to be back to normal now. Thanks in advance.