Sending emails with HTML or not?

I am developing an application which will send 1000's of emails and I'm debating on whether or not to send html in the email. I have two questions:
1. Do most email clients support html? Most of the recipients of the emails will be AOL, hotmail/msn, or yahoo clients. Are there any stats on how many people are running clients that don't support html?
2. The emails I send require an embedded image. Can I send an email with an image and it not be a html email? If so, how? A multipart email? If anybody has an example that would be great!
I'd prefer to not use HTML if possible.
Thanks,
JEB

Here is a simplified version of the code. I've left out simple variable declarations, methods, and try-catch blocks but they are obivious...
        // AQUIRE THE JAVAMAIL SESSION OBJECT
        Properties props = new Properties();
        props.put("mail.smtp.host", smtpHost);
        Session session = Session.getInstance(props, null);
        // PREPARE THE MULTIPART MESSAGE
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from, personal));
        if (bcc != null)
            message.setRecipient(Message.RecipientType.BCC, new InternetAddress(bcc));
        message.setSubject(subject);
        MimeMultipart multipart = new MimeMultipart("alternative");
        BodyPart bodyPartText = new MimeBodyPart();
        BodyPart bodyPartHtml = new MimeBodyPart();
        BodyPart bodyPartImage = new MimeBodyPart();
        bodyPartImage.setDisposition(Part.INLINE);
        FileDataSource fds = new FileDataSource(photo);
        bodyPartImage.setFileName(fds.getName());
        bodyPartImage.setDataHandler(new DataHandler(fds));
        bodyPartImage.setHeader("Content-ID", "23abc@pc27");
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
        // THESE METHODS JUST RETURN TEXT OR HTML, RESPECTIVELY
        String htmlContent = createHtmlContent();
        String textContent = createTextContent();
        // SEND A HTML AND TEXT ALTERNATIVE EMAIL FOR THOSE WHO DON'T SUPPORT HTML
        bodyPartText.setContent(textContent, "text/plain");
        bodyPartHtml.setContent(htmlContent, "text/html");
        multipart.addBodyPart(bodyPartHtml ,0);
        multipart.addBodyPart(bodyPartImage, 1);
        multipart.addBodyPart(bodyPartText, 2);
        message.setContent(multipart);
        // SEND THE MAIL MESSAGE
        Transport.send(message);Hope this helps,
JEB

Similar Messages

  • Send Email with HTML format in Outlook Macro

    I can use the following to send email with HTML format in VBA. I also have created an HTML file. Is there a way to load the file into .HTMLBody to send it as HTML format message?
        Set OutlookApp = CreateObject("Outlook.Application")
        Set objMail = OutlookApp.CreateItem(olMailItem)
        With objMail
           .BodyFormat = olFormatHTML
           .HTMLBody = "<HTML><BODY>Enter the message text here. </BODY></HTML>"
           .Display
        End With

    Try: 
    Dim fso As Scripting.FileSystemObject
    Dim htmlFile As Scripting.TextStream
    Set fso = New Scripting.FileSystemObject
    Set htmlFile = fso.OpenTextFile("C:\path\to\my-html-file.htm")
    strInsert = htmlFile.ReadAll
    then change:
    .htmlbody = strInsert
    oh, and you need to set a reference to the Scripting runtime in Tools, References. 
    Diane Poremsky [MVP - Outlook]
    Outlook & Exchange Solutions Center
    Outlook Tips
    Subscribe to Exchange Messaging Outlook weekly newsletter

  • Send email with html and images over Sockets

    Hi! I'm sending email messages through sockets with html. So far is working great. But now, I need to include images in the html code, like a web page. I don't have any idea on how to do this. Sending image apart from the html code is not big deal, but how to put it in the code. I mean how to make this html code, work:
    <table border="0">
         <tr>
              <td>Image in code</td>
         </tr>
         <tr>
              <img src="what to put here"/>
         </tr>
    </table>This is the code that I'm using to send the html mail:
    StringBuffer retBuff = new StringBuffer();
              //BufferedReader msg;
              //msg = new BufferedReader(msgFileReader);
              smtpPipe = new Socket(mailHost, SMTP_PORT);
              smtpPipe.setSoTimeout(120000);
              if (smtpPipe == null) {
                   return retBuff;
              inn = smtpPipe.getInputStream();
              outt = smtpPipe.getOutputStream();
              in = new BufferedReader(new InputStreamReader(inn));
              out = new PrintWriter(new OutputStreamWriter(outt), true);
              if (inn == null || outt == null) {
                   retBuff.append("Failed to open streams to socket.");
                   return retBuff;
              String initialID = in.readLine();
              retBuff.append(initialID);
              retBuff.append("HELO " + localhost.getHostName());
              out.println("HELO " + localhost.getHostName());
              String welcome = in.readLine();
              retBuff.append(welcome);
              retBuff.append("MAIL From:<" + from + ">");
              out.println("MAIL From:<" + from + ">");
              String senderOK = in.readLine();
              retBuff.append(senderOK);
              for (int i = 0; i < to.length; i++) {
                   retBuff.append("RCPT TO:<" + to[i] + ">");
                   out.println("RCPT TO:<" + to[i] + ">");
                   String recipientOK = in.readLine();
                   retBuff.append(recipientOK);
              retBuff.append("DATA");
              out.println("DATA");
              out.println("From: Steren <" + from + ">");
              out.println("Subject: " + subject);
              out.println("Mime-Version: 1.0;");
              out.println("Content-Type: text/html; charset=\"ISO-8859-1\";");
              //out.println("Content-Type: multipart/mixed; charset=\"ISO-8859-1\";");
              //out.println("Content-Transfer-Encoding: 7bit;");
              //String line;
              //while ((line = msg.readLine()) != null) {
              //     out.println(line);
              out.println(msg);
              retBuff.append(".");
              out.println(".");
              String acceptedOK = in.readLine();
              retBuff.append(acceptedOK);
              retBuff.append("QUIT");
              out.println("QUIT");
              return retBuff;

    Throw all this away and use one of the numerous existing Java mail packages, such as javax.mail for a start.

  • Sending email with HTML report through a button

    Hi,
    I've noticed in APEX 4 there is a default option (through Action Menu -> Download Formats: email) to send an email with report in HTML format...
    may I know how to accomplish it using a Button... seems like APEX is using javascript:gReport.email.show(); function to accomplish it but I don't know how to implement it...
    Please advice
    Thanks in advance

    qwe12654 wrote:
    GokhanAtil,
    I've posted a sample on APEX.ORACLE.COM... LOGIN DETAILS ARE SAME AS ABOVE...
    ON the page now I have both the SQL based report and interactive report...
    On the top right you may see 2 icons.. one for downloading report in PDF (using SQL Report as the source) and the second for sending email (using interactive report, similar logic as what you've recommended)...
    Is there a way I may be able to send report via email, using SQL report as the source (rather than interactive report)...?
    You can always use APEX_MAIL to send emails.
    http://download.oracle.com/docs/cd/E10513_01/doc/apirefs.310/e12855/apex_mail.htm
    or the alternative option would be:
    to convert all my SQL reports into interactive, would require a bit of efforts (I'll go with it if the above option is not available)... but would need to know how to download INTERACTIVE reports in PDF, excel and CSV formats using a button ... similar logic to what you've done for sending emails
    Thanks again for all your assistanceIt's very easy to make buttons for downloading the interactive reports in HTML, CSV or PDF.
    I have created a PDF button and put the link:
    http://apex.oracle.com/pls/apex/f?p=40418:11:1316531694094700:PDF
    "1316531694094700" is the value of p_instance. You can find it from HTML codes of your page:
    <input type="hidden" name="p_instance" value="1316531694094700" id="pInstance">
    You can change PDF to CSV or HTMLD (so your visitor download the report in CSV or HTML)
    Best Regards,
    Gokhan
    If this question is answered, please mark appropriate posts as correct/helpful and the thread as closed. Thanks

  • Send email with HTML output?

    I have A CFM FILE(testing3.cfm):
    <cfset month = #URL.Month#>
    <cfset year = #URL.Year#>
    <CFQUERY>
    SELECT .....code..
    </CFQUERY>
    <HTML>
    <table>
    <thead>
    <tr >
    <th>Month</th>
    <th>Employee First Name</th>
    <th>Employee Last Name</th>
    <th>Stars<br/></th>
    <cfoutput query="">
    <tr >
    <TD></TD>
    </tr>
    </cfoutput>
    </table>
    --- more code, pretty much the same
    </HTML>
    I can see this 'report' when i click on the link depending on the year or month.(testing2.cfm) file
    This file gets data from a table from every month,
    which works good.
    I want to be able to send a email of these results to who ever I choose to send it to.
    For example not the same people everytime , I would choose who I put in the 'TO' email part.
    So maybe there would be a button/link that would open up the email message (outlook) and i
    be able to see what is on  the html and be able to send it to the people I would like.
    Doing my research I have seen I can use 'cfemail' but this doesnt seem like it would be able
    to do what I want, only be able to do attachments.I would like to see the report i will send
    before I send it out( from the above code i can click on it).
    I be thinking maybe I can add a button/link next the the month in 'testing2.cfm', but im not sure if
    that would be the best way to do it.
    What would be the best way I can approch this? Any tips or articles I can read would help.

    You could design it such as to be able to view the content and send the mail on the same page. An example follows.
    testing2.cfm
    1/2014 (a link that takes you to testing3.cfm)
    testing3.cfm
    <cfsavecontent variable="pageContent">
    <cfquery>
    </cfquery>
    <html>
    <body>
    <table>
    <thead>
    <tr >
    <th>Month</th>
    <th>Employee First Name</th>
    <th>Employee Last Name</th>
    <th>Stars<br/></th>
    etc.
    </body>
    </html>
    </cfsavecontent>
    <p>
    <!--- Display page content --->
    <cfoutput>#pageContent#</cfoutput>
    </p>
    <p>
    <!--- Clicking on this link will re-open the current page, and send mail --->
    <a href="testing3.cfm?action=mail">Send mail</a>
    </p>
    <cfif isdefined("URL.action") and URL.action is "mail">
        <cfquery name="getEmailAddresses" datasource="myDSN">
            SELECT email FROM myTable
        </cfquery>
        <cfmail query="getEmailAddresses"
            from="[email protected]"
            to="#getEmailAddresses.email#"
            subject="Information">
    Dear colleague,
    Here is the information for January 2014.
        <cfoutput>#pageContent#</cfoutput>
    Regards,
    Admin    
        </cfmail>
    <p>The e-mails have been sent!</p>
    </cfif>

  • TS3276 able to send emails with AOL but NOT about to receive them...how do I get my emails?

    Can not receive my emails from AOL or Gmail but I CAN send them...can anyone help me ...thanx

    Can not receive my emails from AOL or Gmail but I CAN send them...can anyone help me ...thanx
    What version of Mac OS X are you using?
    What email application are you using?
    You have to configure both for sending & receiving email.  Look at the receive configuration.
    Robert

  • Why can't I send emails with ios8 when not on wifi

    When not on wifi, I cannot send mail and a message about IMAP comes up.  It also says to check configuration in settings.  What is the solution.  Thanks.

    Probably you did not enter your email and password for the outgoing mail server when setting up the account. It works on your WiFi because it is within your ISP's network. When you are using cellular data it's outside of your ISP's network, so you need to prove who you are to the server.

  • I'm not able to send emails with mail.ru. Receiving and reading is not a problem. When I create a email with mail.ru its not possible to send it although its stored in my mail.ru account as "still to be send". What can it be??

    I'm not able to send emails with mail.ru. Receiving is not a problem. Creating a mail is also not a problem and the mail will be stored at mail.ru as still to be send, only problem is its not possible to send. I noticed the buttons for sending change colour when used but they don't perform. What it is?

    Don't know what changed, but all of a sudden able to send emails by mail.ru ...... sorry for bothering.

  • I can receive but not send emails with my skynet account - what am I doing wrong ?

    I can receive but not send emails with my skynet account - what am I doing wrong ?
    I have no problems with my Yahoo account but I can not send emails with my skynet account.
    Actually in iPhone :
    Outgoing Mail Server > SMTP "relay.skynet.be"
    Primary server > Not Configured > Off
    Thank you ...

    When you set them up, did you set up both the incoming and outgoing email servers separately, and did you enter the correct SMTP server name, and enter your userid and password even though it says "optional"?
    Something else to try, if you haven't, is delete the accounts, connect the iPhone to iTunes, on the Info tab check the box to sync mail server settings, then sync. This should duplicate the settings from your computer to your iPhone.

  • When mac email changed to icloud a while ago i lost all my emails and things i have an email subscription to send emails but they do not reach the email that i updated with the same address any help?

    When mac email changed to icloud a while ago i lost all my emails and things i have an email subscription to send emails but they do not reach the email that i updated with the same address any help?

    If you purchased about 2 years ago new I am sure it is a Intel iMac. To find out what type of iMac you have just click on the Apple menu item in the finder and select about this Mac. I would check the ISP mail site and get the correct outgoing mail server info.   

  • Send Email in HTML Format with Javamail.

    GOD BE BLESSED!
    Hello dudes,
    i create a jsp page let me send emails from a database using the API Javamail.
    But these emails when i send then, goes in text format only, and i want to send emails in HTML format too. Anyone can help me?
    I think the Javamail API can send in HTML format.
    thanks and sorry, my english is basic but i think you understand. ;)
    Adler Medrado

    I was trying to do the same thing...I found this on the java.sun.com website somewhere. Hope it works out for you.
    try {
    String host = "";
    String from = "";
    String to = "";
    String fileAttachment = fileName;
    // Get system properties
    Properties props = new Properties();
    // Setup mail server
    props.put("mail.smtp.host", host);
    // Get session
    Session session1 =
    Session.getInstance(props, null);
    // Define message
    MimeMessage message =
    new MimeMessage(session1);
    message.setFrom(
    new InternetAddress(from));
    message.addRecipient(
    Message.RecipientType.TO,
    new InternetAddress(to));
    message.setSubject("");
    // create the message part
    MimeBodyPart messageBodyPart =
    new MimeBodyPart();
    //fill message
    messageBodyPart.setText("");
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);
    // Part two is attachment
    messageBodyPart = new MimeBodyPart();
    DataSource source =
    new FileDataSource(fileAttachment);
    messageBodyPart.setDataHandler(
    new DataHandler(source));
                   messageBodyPart.setFileName(fileAttachment);
    multipart.addBodyPart(messageBodyPart);
    // Put parts in message
    message.setContent(multipart);
    // Send the message
    Transport.send( message );
    }catch (Exception e){
    System.err.print("Mailing error:");
    System.err.println(e);

  • Sending email with multiple attachments

    Hi forum,
    I am able to send email with a single attachment using maildemo.sql from: http://www.oracle.com/technology/sample_code/tech/pl_sql/htdocs/Utl_Smtp_Sample.html
    But now I am trying to send email with more than 1 attachment and it does not work. My code that calls the above mentioned package is as follows:
    <code>
    PROCEDURE send (
    psender VARCHAR2,
    precipients VARCHAR2,
    pcc VARCHAR2,
    pbcc VARCHAR2,
    psubject VARCHAR2,
    pmessage VARCHAR2,
    pnumattach NUMBER) -- The number of attachments that need to be sent
    IS
    p_blob BLOB;
    p_filename VARCHAR2(200);
    p_filetype VARCHAR2(200);
    p_currSeq NUMBER;
    conn utl_smtp.CONNECTION;
    i NUMBER;
    j NUMBER;
    len NUMBER;
    BEGIN
    IF pnumattach > 1
    THEN
    conn := SEND_EMAIL_HELPER.begin_mail(
              sender => psender,
              recipients => precipients,
              subject => psubject,
              mime_type => send_email_helper.MULTIPART_MIME_TYPE);
    j := 0;
    SELECT seq_attach_transact_id.CURRVAL INTO p_currSeq FROM dual; -- seq_attach_transact_id is a primary key that identifies every single attachment in the table
    WHILE (j < pnumattach) LOOP
    p_currSeq := p_currSeq - j;
    SELECT blob_content INTO p_blob FROM wwdoc_document WHERE transaction_id = p_currSeq;
    SELECT name INTO p_filename FROM wwdoc_document WHERE transaction_id = p_currSeq;
    SELECT mime_type INTO p_filetype FROM wwdoc_document WHERE transaction_id = p_currSeq;
    SEND_EMAIL_HELPER.begin_attachment(
    conn => conn,
    mime_type => p_filetype,
    inline => TRUE,
    filename => p_filename,
    transfer_enc => 'base64');
    -- split the Base64 encoded attachment into multiple lines
    i := 1;
    len := DBMS_LOB.getLength(p_blob);
    WHILE (i < len) LOOP
    IF(i + SEND_EMAIL_HELPER.MAX_BASE64_LINE_WIDTH < len)THEN
    UTL_SMTP.Write_Raw_Data (conn,
    UTL_ENCODE.Base64_Encode(
    DBMS_LOB.SUBSTR(p_blob, SEND_EMAIL_HELPER.MAX_BASE64_LINE_WIDTH, i)));
    ELSE
    UTL_SMTP.Write_Raw_Data (conn,
    UTL_ENCODE.Base64_Encode(
    DBMS_LOB.SUBSTR(p_blob, (len - i)+1, i)));
    END IF;
    UTL_SMTP.Write_Data(conn, UTL_TCP.CRLF);
    i := i + SEND_EMAIL_HELPER.MAX_BASE64_LINE_WIDTH;
    END LOOP;
    SEND_EMAIL_HELPER.end_attachment(conn => conn);
    END LOOP;
    SEND_EMAIL_HELPER.attach_text(
    conn => conn,
    data => pmessage,
    mime_type => 'text/html');
    SEND_EMAIL_HELPER.end_mail( conn => conn );
    ELSE
    utl_mail.send(psender,precipients,pcc,pbcc,psubject,pmessage);
    END IF;
    END send;
    </code>
    Can anyone please tell me where am i going wrong.
    Message was edited by:
    Monk

    The easiest is to send an e-mail with multiple attachments to yourself and then view the message in raw to see how it is formatted - how the boundaries work. what the boundary headers are, etc.
    Then you use that as a template for your PL/SQL code to generate a MIME body for an e-mail that has multiple attachments.
    To debug.. have your PL/SQL code send sample e-mails with multiple attachment to your account, view it in raw format and compare that to the original format you've based your template on.
    And none of this is really a PL/SQL issue.. it is all about formatting a valid MIME message for an e-mail.

  • Email with HTML code

    I have a problem with generating HTML based email.
    BPEL code example:
    <copy>
    <from expression="'%lt;HTML%gt;%lt;BODY%gt;%lt;B%gt;Hello World! %lt;/B%gt;%lt;/BODY%gt;%lt;/HTML%gt;'"/>
    <to variable="mailRequestOne" part="payload" query="/mail:mailMessage/mail:content/mail:multiPart/mail:bodyPart[1]/mail:content"/>
    </copy>
    It would send email:
    %lt;HTML%gt;%lt;BODY%gt;%lt;B%gt;Hello World!%lt;/B%gt;%lt;/BODY%gt;%lt;/HTML%gt;
    Any idea how to send an email with HTML code?
    ps: replace % by &

    Not sure what you expect. Your URL is absolute and pointing to a local file resource. It's not a proper relative HTML link. Beyond that it's toatlly unclear how you actually plan to load your image and where they are hosted, so nobody can tell you anything. Either way, there is an obviously painful lack of understanding of even the most basic web techniques, so the best advise anyone would give you is to spend some time with a web search and actualyl learn some of that stuff...
    Mylenium

  • How to send Email with attachments

    Hi im Trying to send a file as attachment using EMail Activity operator.
    Can we do it using Email activity? If yes, then how can we do it? If no, then please tell me about any other method using which i can send a email with attachments.
    Regards
    Vibhuti

    Better late than never, a comprehensive demo on the topic:
    REM
    REM maildemo.sql - A PL/SQL package to demonstrate how to use the UTL_SMTP
    REM package to send emails in ASCII and non-ASCII character sets, emails
    REM with text or binary attachments.
    REM
    REM Note: this package relies on the UTL_ENCODE PL/SQL package in Oracle 9i.
    CREATE OR REPLACE PACKAGE demo_mail IS
      ----------------------- Customizable Section -----------------------
      -- Customize the SMTP host, port and your domain name below.
      smtp_host   VARCHAR2(256) := 'smtp-server.some-company.com';
      smtp_port   PLS_INTEGER   := 25;
      smtp_domain VARCHAR2(256) := 'some-company.com';
      -- Customize the signature that will appear in the email's MIME header.
      -- Useful for versioning.
      MAILER_ID   CONSTANT VARCHAR2(256) := 'Mailer by Oracle UTL_SMTP';
      --------------------- End Customizable Section ---------------------
      -- A unique string that demarcates boundaries of parts in a multi-part email
      -- The string should not appear inside the body of any part of the email.
      -- Customize this if needed or generate this randomly dynamically.
      BOUNDARY        CONSTANT VARCHAR2(256) := '-----7D81B75CCC90D2974F7A1CBD';
      FIRST_BOUNDARY  CONSTANT VARCHAR2(256) := '--' || BOUNDARY || utl_tcp.CRLF;
      LAST_BOUNDARY   CONSTANT VARCHAR2(256) := '--' || BOUNDARY || '--' ||
                                                  utl_tcp.CRLF;
      -- A MIME type that denotes multi-part email (MIME) messages.
      MULTIPART_MIME_TYPE CONSTANT VARCHAR2(256) := 'multipart/mixed; boundary="'||
                                                      BOUNDARY || '"';
      MAX_BASE64_LINE_WIDTH CONSTANT PLS_INTEGER   := 76 / 4 * 3;
      -- A simple email API for sending email in plain text in a single call.
      -- The format of an email address is one of these:
      --   someone@some-domain
      --   "Someone at some domain" <someone@some-domain>
      --   Someone at some domain <someone@some-domain>
      -- The recipients is a list of email addresses  separated by
      -- either a "," or a ";"
      PROCEDURE mail(sender     IN VARCHAR2,
               recipients IN VARCHAR2,
               subject    IN VARCHAR2,
               message    IN VARCHAR2);
      -- Extended email API to send email in HTML or plain text with no size limit.
      -- First, begin the email by begin_mail(). Then, call write_text() repeatedly
      -- to send email in ASCII piece-by-piece. Or, call write_mb_text() to send
      -- email in non-ASCII or multi-byte character set. End the email with
      -- end_mail().
      FUNCTION begin_mail(sender     IN VARCHAR2,
                    recipients IN VARCHAR2,
                    subject    IN VARCHAR2,
                    mime_type  IN VARCHAR2    DEFAULT 'text/plain',
                    priority   IN PLS_INTEGER DEFAULT NULL)
                    RETURN utl_smtp.connection;
      -- Write email body in ASCII
      PROCEDURE write_text(conn    IN OUT NOCOPY utl_smtp.connection,
                     message IN VARCHAR2);
      -- Write email body in non-ASCII (including multi-byte). The email body
      -- will be sent in the database character set.
      PROCEDURE write_mb_text(conn    IN OUT NOCOPY utl_smtp.connection,
                     message IN            VARCHAR2);
      -- Write email body in binary
      PROCEDURE write_raw(conn    IN OUT NOCOPY utl_smtp.connection,
                    message IN RAW);
      -- APIs to send email with attachments. Attachments are sent by sending
      -- emails in "multipart/mixed" MIME format. Specify that MIME format when
      -- beginning an email with begin_mail().
      -- Send a single text attachment.
      PROCEDURE attach_text(conn         IN OUT NOCOPY utl_smtp.connection,
                   data         IN VARCHAR2,
                   mime_type    IN VARCHAR2 DEFAULT 'text/plain',
                   inline       IN BOOLEAN  DEFAULT TRUE,
                   filename     IN VARCHAR2 DEFAULT NULL,
                      last         IN BOOLEAN  DEFAULT FALSE);
      -- Send a binary attachment. The attachment will be encoded in Base-64
      -- encoding format.
      PROCEDURE attach_base64(conn         IN OUT NOCOPY utl_smtp.connection,
                     data         IN RAW,
                     mime_type    IN VARCHAR2 DEFAULT 'application/octet',
                     inline       IN BOOLEAN  DEFAULT TRUE,
                     filename     IN VARCHAR2 DEFAULT NULL,
                     last         IN BOOLEAN  DEFAULT FALSE);
      -- Send an attachment with no size limit. First, begin the attachment
      -- with begin_attachment(). Then, call write_text repeatedly to send
      -- the attachment piece-by-piece. If the attachment is text-based but
      -- in non-ASCII or multi-byte character set, use write_mb_text() instead.
      -- To send binary attachment, the binary content should first be
      -- encoded in Base-64 encoding format using the demo package for 8i,
      -- or the native one in 9i. End the attachment with end_attachment.
      PROCEDURE begin_attachment(conn         IN OUT NOCOPY utl_smtp.connection,
                        mime_type    IN VARCHAR2 DEFAULT 'text/plain',
                        inline       IN BOOLEAN  DEFAULT TRUE,
                        filename     IN VARCHAR2 DEFAULT NULL,
                        transfer_enc IN VARCHAR2 DEFAULT NULL);
      -- End the attachment.
      PROCEDURE end_attachment(conn IN OUT NOCOPY utl_smtp.connection,
                      last IN BOOLEAN DEFAULT FALSE);
      -- End the email.
      PROCEDURE end_mail(conn IN OUT NOCOPY utl_smtp.connection);
      -- Extended email API to send multiple emails in a session for better
      -- performance. First, begin an email session with begin_session.
      -- Then, begin each email with a session by calling begin_mail_in_session
      -- instead of begin_mail. End the email with end_mail_in_session instead
      -- of end_mail. End the email session by end_session.
      FUNCTION begin_session RETURN utl_smtp.connection;
      -- Begin an email in a session.
      PROCEDURE begin_mail_in_session(conn       IN OUT NOCOPY utl_smtp.connection,
                          sender     IN VARCHAR2,
                          recipients IN VARCHAR2,
                          subject    IN VARCHAR2,
                          mime_type  IN VARCHAR2  DEFAULT 'text/plain',
                          priority   IN PLS_INTEGER DEFAULT NULL);
      -- End an email in a session.
      PROCEDURE end_mail_in_session(conn IN OUT NOCOPY utl_smtp.connection);
      -- End an email session.
      PROCEDURE end_session(conn IN OUT NOCOPY utl_smtp.connection);
    END;
    CREATE OR REPLACE PACKAGE BODY demo_mail IS
      -- Return the next email address in the list of email addresses, separated
      -- by either a "," or a ";".  The format of mailbox may be in one of these:
      --   someone@some-domain
      --   "Someone at some domain" <someone@some-domain>
      --   Someone at some domain <someone@some-domain>
      FUNCTION get_address(addr_list IN OUT VARCHAR2) RETURN VARCHAR2 IS
        addr VARCHAR2(256);
        i    pls_integer;
        FUNCTION lookup_unquoted_char(str  IN VARCHAR2,
                          chrs IN VARCHAR2) RETURN pls_integer AS
          c            VARCHAR2(5);
          i            pls_integer;
          len          pls_integer;
          inside_quote BOOLEAN;
        BEGIN
           inside_quote := false;
           i := 1;
           len := length(str);
           WHILE (i <= len) LOOP
          c := substr(str, i, 1);
          IF (inside_quote) THEN
            IF (c = '"') THEN
              inside_quote := false;
            ELSIF (c = '\') THEN
              i := i + 1; -- Skip the quote character
            END IF;
            GOTO next_char;
          END IF;
          IF (c = '"') THEN
            inside_quote := true;
            GOTO next_char;
          END IF;
          IF (instr(chrs, c) >= 1) THEN
             RETURN i;
          END IF;
          <<next_char>>
          i := i + 1;
           END LOOP;
           RETURN 0;
        END;
      BEGIN
        addr_list := ltrim(addr_list);
        i := lookup_unquoted_char(addr_list, ',;');
        IF (i >= 1) THEN
          addr      := substr(addr_list, 1, i - 1);
          addr_list := substr(addr_list, i + 1);
        ELSE
          addr := addr_list;
          addr_list := '';
        END IF;
        i := lookup_unquoted_char(addr, '<');
        IF (i >= 1) THEN
          addr := substr(addr, i + 1);
          i := instr(addr, '>');
          IF (i >= 1) THEN
         addr := substr(addr, 1, i - 1);
          END IF;
        END IF;
        RETURN addr;
      END;
      -- Write a MIME header
      PROCEDURE write_mime_header(conn  IN OUT NOCOPY utl_smtp.connection,
                         name  IN VARCHAR2,
                         value IN VARCHAR2) IS
      BEGIN
        utl_smtp.write_data(conn, name || ': ' || value || utl_tcp.CRLF);
      END;
      -- Mark a message-part boundary.  Set <last> to TRUE for the last boundary.
      PROCEDURE write_boundary(conn  IN OUT NOCOPY utl_smtp.connection,
                      last  IN            BOOLEAN DEFAULT FALSE) AS
      BEGIN
        IF (last) THEN
          utl_smtp.write_data(conn, LAST_BOUNDARY);
        ELSE
          utl_smtp.write_data(conn, FIRST_BOUNDARY);
        END IF;
      END;
      PROCEDURE mail(sender     IN VARCHAR2,
               recipients IN VARCHAR2,
               subject    IN VARCHAR2,
               message    IN VARCHAR2) IS
        conn utl_smtp.connection;
      BEGIN
        conn := begin_mail(sender, recipients, subject);
        write_text(conn, message);
        end_mail(conn);
      END;
      FUNCTION begin_mail(sender     IN VARCHAR2,
                    recipients IN VARCHAR2,
                    subject    IN VARCHAR2,
                    mime_type  IN VARCHAR2    DEFAULT 'text/plain',
                    priority   IN PLS_INTEGER DEFAULT NULL)
                    RETURN utl_smtp.connection IS
        conn utl_smtp.connection;
      BEGIN
        conn := begin_session;
        begin_mail_in_session(conn, sender, recipients, subject, mime_type,
          priority);
        RETURN conn;
      END;
      PROCEDURE write_text(conn    IN OUT NOCOPY utl_smtp.connection,
                     message IN VARCHAR2) IS
      BEGIN
        utl_smtp.write_data(conn, message);
      END;
      PROCEDURE write_mb_text(conn    IN OUT NOCOPY utl_smtp.connection,
                     message IN            VARCHAR2) IS
      BEGIN
        utl_smtp.write_raw_data(conn, utl_raw.cast_to_raw(message));
      END;
      PROCEDURE write_raw(conn    IN OUT NOCOPY utl_smtp.connection,
                    message IN RAW) IS
      BEGIN
        utl_smtp.write_raw_data(conn, message);
      END;
      PROCEDURE attach_text(conn         IN OUT NOCOPY utl_smtp.connection,
                   data         IN VARCHAR2,
                   mime_type    IN VARCHAR2 DEFAULT 'text/plain',
                   inline       IN BOOLEAN  DEFAULT TRUE,
                   filename     IN VARCHAR2 DEFAULT NULL,
                      last         IN BOOLEAN  DEFAULT FALSE) IS
      BEGIN
        begin_attachment(conn, mime_type, inline, filename);
        write_text(conn, data);
        end_attachment(conn, last);
      END;
      PROCEDURE attach_base64(conn         IN OUT NOCOPY utl_smtp.connection,
                     data         IN RAW,
                     mime_type    IN VARCHAR2 DEFAULT 'application/octet',
                     inline       IN BOOLEAN  DEFAULT TRUE,
                     filename     IN VARCHAR2 DEFAULT NULL,
                     last         IN BOOLEAN  DEFAULT FALSE) IS
        i   PLS_INTEGER;
        len PLS_INTEGER;
      BEGIN
        begin_attachment(conn, mime_type, inline, filename, 'base64');
        -- Split the Base64-encoded attachment into multiple lines
        i   := 1;
        len := utl_raw.length(data);
        WHILE (i < len) LOOP
           IF (i + MAX_BASE64_LINE_WIDTH < len) THEN
          utl_smtp.write_raw_data(conn,
             utl_encode.base64_encode(utl_raw.substr(data, i,
             MAX_BASE64_LINE_WIDTH)));
           ELSE
          utl_smtp.write_raw_data(conn,
            utl_encode.base64_encode(utl_raw.substr(data, i)));
           END IF;
           utl_smtp.write_data(conn, utl_tcp.CRLF);
           i := i + MAX_BASE64_LINE_WIDTH;
        END LOOP;
        end_attachment(conn, last);
      END;
      PROCEDURE begin_attachment(conn         IN OUT NOCOPY utl_smtp.connection,
                        mime_type    IN VARCHAR2 DEFAULT 'text/plain',
                        inline       IN BOOLEAN  DEFAULT TRUE,
                        filename     IN VARCHAR2 DEFAULT NULL,
                        transfer_enc IN VARCHAR2 DEFAULT NULL) IS
      BEGIN
        write_boundary(conn);
        write_mime_header(conn, 'Content-Type', mime_type);
        IF (filename IS NOT NULL) THEN
           IF (inline) THEN
           write_mime_header(conn, 'Content-Disposition',
             'inline; filename="'||filename||'"');
           ELSE
           write_mime_header(conn, 'Content-Disposition',
             'attachment; filename="'||filename||'"');
           END IF;
        END IF;
        IF (transfer_enc IS NOT NULL) THEN
          write_mime_header(conn, 'Content-Transfer-Encoding', transfer_enc);
        END IF;
        utl_smtp.write_data(conn, utl_tcp.CRLF);
      END;
      PROCEDURE end_attachment(conn IN OUT NOCOPY utl_smtp.connection,
                      last IN BOOLEAN DEFAULT FALSE) IS
      BEGIN
        utl_smtp.write_data(conn, utl_tcp.CRLF);
        IF (last) THEN
          write_boundary(conn, last);
        END IF;
      END;
      PROCEDURE end_mail(conn IN OUT NOCOPY utl_smtp.connection) IS
      BEGIN
        end_mail_in_session(conn);
        end_session(conn);
      END;
      FUNCTION begin_session RETURN utl_smtp.connection IS
        conn utl_smtp.connection;
      BEGIN
        -- open SMTP connection
        conn := utl_smtp.open_connection(smtp_host, smtp_port);
        utl_smtp.helo(conn, smtp_domain);
        RETURN conn;
      END;
      PROCEDURE begin_mail_in_session(conn       IN OUT NOCOPY utl_smtp.connection,
                          sender     IN VARCHAR2,
                          recipients IN VARCHAR2,
                          subject    IN VARCHAR2,
                          mime_type  IN VARCHAR2  DEFAULT 'text/plain',
                          priority   IN PLS_INTEGER DEFAULT NULL) IS
        my_recipients VARCHAR2(32767) := recipients;
        my_sender     VARCHAR2(32767) := sender;
      BEGIN
        -- Specify sender's address (our server allows bogus address
        -- as long as it is a full email address ([email protected]).
        utl_smtp.mail(conn, get_address(my_sender));
        -- Specify recipient(s) of the email.
        WHILE (my_recipients IS NOT NULL) LOOP
          utl_smtp.rcpt(conn, get_address(my_recipients));
        END LOOP;
        -- Start body of email
        utl_smtp.open_data(conn);
        -- Set "From" MIME header
        write_mime_header(conn, 'From', sender);
        -- Set "To" MIME header
        write_mime_header(conn, 'To', recipients);
        -- Set "Subject" MIME header
        write_mime_header(conn, 'Subject', subject);
        -- Set "Content-Type" MIME header
        write_mime_header(conn, 'Content-Type', mime_type);
        -- Set "X-Mailer" MIME header
        write_mime_header(conn, 'X-Mailer', MAILER_ID);
        -- Set priority:
        --   High      Normal       Low
        --   1     2     3     4     5
        IF (priority IS NOT NULL) THEN
          write_mime_header(conn, 'X-Priority', priority);
        END IF;
        -- Send an empty line to denotes end of MIME headers and
        -- beginning of message body.
        utl_smtp.write_data(conn, utl_tcp.CRLF);
        IF (mime_type LIKE 'multipart/mixed%') THEN
          write_text(conn, 'This is a multi-part message in MIME format.' ||
         utl_tcp.crlf);
        END IF;
      END;
      PROCEDURE end_mail_in_session(conn IN OUT NOCOPY utl_smtp.connection) IS
      BEGIN
        utl_smtp.close_data(conn);
      END;
      PROCEDURE end_session(conn IN OUT NOCOPY utl_smtp.connection) IS
      BEGIN
        utl_smtp.quit(conn);
      END;
    END;
    /

  • When send email with emoticons to a pc user, emoticons show as an empty box. Also, email content has a symbol on every line. How to stop this from happening?

    When send email with emoticons to a pc user, emoticons show as an empty box. Also, email content has a > symbol on every line. How to stop this from happening?

    Dear Mr. Toad (my all-time favorite ride at Disneyland ;-) ..
    Thanks so much for your detailed reply.. my netbook is in the bedroom, turned off.. I (so far) only use it in the evening, in the bedroom.. I've saved your response, and will try your suggestions, and let you know if they solve the problem I described. I really appreciate you taking the time to post such a detailed reply..
    I can't answer your Thunderbird "configuration" questions, because I'm in the living room, using the crap Vista laptop, on which I plan to install Thunderbird, and then take Windoze Mail out in the street and drive over it a few times.. I'll get back to you one way or the other, and let you know if your instructions solved the problem, or not..
    I don't understand why Thunderbird "out of the box", so to speak, simply doesn't forward HTML emails with embedded graphics, (like Outlook Excess, and Winblows Mail do).. without having to go through those steps. I personally HATE HTML email, but over the years, it's become more and more prevelant.. so it's a problem I must fix..
    Thanks again..
    Harv..

Maybe you are looking for

  • Remote update of a 1000 series LWAP

    My company recently went from an old airspace 4024 with firmware 3-2-195-13 to a new 4402-50 running 4-1-185-0. Using Option 43 in DHCP allowed the new 4402 to see the AP's on different VLan's and Subnet's and issue IP addresses to the AP's and clien

  • Clip from STP heard, not seen in Viewer, not heard in sequence

    I made a clip with a limiter in STP. OPened in FCP and though I can hear it in Viewer, I can't see the wave form. Then when I drop it in a sequence I can't hear it at all. What's my problem?

  • Can't Hear Microphone

    Iv'e got this little microphone I plugged into my computer, and in the sound section of my system preferences, it says that it is plugged in but I can't hear anything. Is there something else I need to do to make this work?

  • Tables for tracing the Maintenance Order Operation to Purchase requistion

    Hi Everyone, Can any one suggest appropriate table for finding the link for tracing Maintenance Order Operation to Purchase Requistion for Service Items. My requirement if I give the Order Number, I require Operations in it & PR Item associated if th

  • Freight calculation in Vi01

    Hi, I have done sufficient search on SDN, but i need your help to find the FM for Freight calcuation in Vi01,2,3. Business requirements is to find out the freigt cost for delivery, for each delivery has multiple pricing conditions, in that i need to