Sending mails to multiple recipients

Hi,
I need to send an e-mail to multiple recipients, none of which may know that the mail was sent to others as well. Of course, the first idea was to use the BCC-field. However, if I do that, the receipients get a mail with an empty To-Field, which looks both stupid and suspicious. Is there a way to send a mail in such a way that each recpient has their own address in the To-Field? I also played around a bit with Automator but I couldn't find anything.

Hi Phunkjoker!
I don't think you can, except by sending each individually.
The only alternative that I can figure out is to send it to yourself, and have the other recipients in the BCC field?

Similar Messages

  • Sending Mails to Multiple Recipients using UTL_SMTP

    create or replace procedure send_mail(msg_text varchar2) is
    c utl_smtp.connection;
    PROCEDURE send_header(name IN VARCHAR2, header IN VARCHAR2) AS
    BEGIN
    utl_smtp.write_data(c, name || ': ' || header || utl_tcp.CRLF);
    END;
    BEGIN
    c := utl_smtp.open_connection('outlook.abc.com');
    utl_smtp.helo(c, 'abc.com');
    utl_smtp.mail(c, '[email protected]');
    utl_smtp.rcpt(c, '[email protected]');
    utl_smtp.open_data(c);
    send_header('From', '"root" <[email protected]>');
    send_header('To', '"abc" <[email protected]>');
    send_header('Subject', 'WARNING: Salary has been changed');
    utl_smtp.write_data(c, utl_tcp.CRLF || msg_text);
    utl_smtp.close_data(c);
    utl_smtp.quit(c);
    EXCEPTION
    WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
    BEGIN
    utl_smtp.quit(c);
    EXCEPTION
    WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
    NULL; -- When the SMTP server is down or unavailable, we don't have
    -- a connection to the server. The quit call will raise an
    -- exception that we can ignore.
    END;
    raise_application_error(-20000,
    'Failed to send mail due to the following error: ' || sqlerrm);
    END;
    ==============
    when I execute the above using
    sql> exec send_mail('hihihih');
    I am getting the mails..no problems...
    So..I created the following trigger and used the above procedure to send the mail...
    CREATE OR REPLACE TRIGGER test_emp_table_trg
    AFTER UPDATE
    ON test_emp_table
    FOR EACH ROW
    WHEN (NEW.sal <> OLD.sal)
    DECLARE
    l_employee_name VARCHAR2 (240);
    l_old_sal VARCHAR2 (240);
    l_new_sal VARCHAR2 (240);
    l_message VARCHAR2 (240);
    BEGIN
    /* Gets the employee full name */
    BEGIN
    SELECT ename
    INTO l_employee_name
    FROM test_emp_table
    WHERE empno = :OLD.empno;
    EXCEPTION
    WHEN OTHERS
    THEN
    l_employee_name := NULL;
    END;
    /* Gets the old Salary */
    BEGIN
    SELECT sal
    INTO l_old_sal
    FROM test_emp_table
    WHERE empno = :OLD.empno;
    EXCEPTION
    WHEN OTHERS
    THEN
    l_old_sal := 0;
    END;
    /* Gets the new salary */
    BEGIN
    SELECT sal
    INTO l_new_sal
    FROM test_emp_table
    WHERE empno= :NEW.empno;
    EXCEPTION
    WHEN OTHERS
    THEN
    l_new_sal := 0;
    END;
    l_message:=
    'Employee Name= '
    || l_employee_name
    || 'Old Salary= '
    || l_old_sal
    || 'New Salary= '
    || l_new_sal;
    BEGIN
    send_mail (l_message);
    END;
    END;
    ===================
    I am not getting desired output..what might be problem friends...I am getting 0 values for old salary and new salary......
    One more thing..when i use 2 receipts in the send_mail procedure like this...I added the following lines in the procedure to send to multiple receipents..
    ======
    utl_smtp.rcpt(c, '[email protected]');
    utl_smtp.rcpt(c, '[email protected]');
    =============
    Pleas have a look and correct me, where i went wrong....
    Edited by: oraDBA2 on Sep 22, 2008 3:12 PM

    Hi, You can use the following routine to send mail to multiple recipients through utl_smtp.
    create or replace package mail_pkg
    as
    type array is table of varchar2(255);
    procedure send( p_sender_e_mail in varchar2,
    p_from in varchar2,
    p_to in array default array(),
    p_cc in array default array(),
    p_bcc in array default array(),
    p_subject in varchar2,
    p_body in long );
    end;
    create or replace package body mail_pkg
    begin
    g_crlf char(2) default chr(13)||chr(10);
    g_mail_conn utl_smtp.connection;
    g_mailhost varchar2(255) := 'ur mail server';
    function address_email( p_string in varchar2,
    p_recipients in array ) return varchar2
    is
    l_recipients long;
    begin
    for i in 1 .. p_recipients.count
    loop
    utl_smtp.rcpt(g_mail_conn, p_recipients(i));
    if ( l_recipients is null )
    then
    l_recipients := p_string || p_recipients(i) ;
    else
    l_recipients := l_recipients || ', ' || p_recipients(i);
    end if;
    end loop;
    return l_recipients;
    end;
    procedure send( p_sender_e_mail in varchar2,
    p_from in varchar2,
    p_to in array default array(),
    p_cc in array default array(),
    p_bcc in array default array(),
    p_subject in varchar2,
    p_body in long );
    end;
    is
    l_to_list long;
    l_cc_list long;
    l_bcc_list long;
    l_date varchar2(255) default
    to_char( SYSDATE, 'dd Mon yy hh24:mi:ss' );
    procedure writeData( p_text in varchar2 )
    as
    begin
    if ( p_text is not null )
    then
    utl_smtp.write_data( g_mail_conn, p_text || g_crlf );
    end if;
    end;
    begin
    g_mail_conn := utl_smtp.open_connection(g_mailhost, 25);
    utl_smtp.helo(g_mail_conn, g_mailhost);
    utl_smtp.mail(g_mail_conn, p_sender_e_mail);
    l_to_list := address_email( 'To: ', p_to );
    l_cc_list := address_email( 'Cc: ', p_cc );
    l_bcc_list := address_email( 'Bcc: ', p_bcc );
    utl_smtp.open_data(g_mail_conn );
    writeData( 'Date: ' || l_date );
    writeData( 'From: ' || nvl( p_from, p_sender_e_mail ) );
    writeData( 'Subject: ' || nvl( p_subject, '(no subject)' ) );
    writeData( l_to_list );
    writeData( l_cc_list );
    utl_smtp.write_data( g_mail_conn, '' || g_crlf );
    utl_smtp.write_data(g_mail_conn, p_body );
    utl_smtp.close_data(g_mail_conn );
    utl_smtp.quit(g_mail_conn);
    end;
    end;
    begin
    mail_pkg.send
    (p_sender_e_mail => 'urmail',
    p_from => 'urmail',
    p_to => mail_pkg.array( 'urmail','othersmail' ),
    p_cc => mail_pkg.array( ' othermail ' ),
    p_bcc => mail_pkg.array( '' ),
    p_subject => 'This is a subject',
    p_body => 'Hello Buddy, this is the mail you need' );
    end;
    /

  • How do I send mail to multiple recipients?

    I am running Mavericks 10.9.5.  I am having trouble sending mail to multiple recipients.  I type in the first person’s name and the e-mail address appears.  When I want to send mail to 2 more people, I can’t.  I type a comma and then a space and then the second person’s name.  All that appears is a duplication of the first person’s name.  I did not have this kind of trouble when I was running OS X, version 10.6.8.  I could type the names of all recipients in the “To”
    line.  What can I do?

    See the response to your other post

  • Retrieve multiple e-mail address and send mail to multiple recipients

    Hello,
    I wonder if somebody could help me...at least with the clue to do the following.
    I have a form, with a textarea , where the people should put the e-mail addreses of all the people that later will receive all the form data via e-mail..
    I do not know how to retrieve all this e-mail addresses from the textarea (format?) and then how to send the e-mail to multiple recipients .
    It works for one...but I do not know how to do this for several recipients...
    could you please help?

    There is a setReceiptants method on the Message object.
    http://java.sun.com/products/javamail/javadocs/javax/mail/Message.html#setRecipients(javax.mail.Message.RecipientType,%20javax.mail.Address[])
    You will need to create an array of Addresses to feed it (just make space, commas, and semi-colons be tokens in your string and iterate it to create the address array)
    travis (at) overwrittenstack.com

  • Problem in sending mails to multiple recipients

    Hellow ABAP gurus,
    i am stuck in a problem, where  cannot send the mail to multiple reciepients.
    actually i am adding recipients one after another, the email address is popualted already.just tell me if i am doing anything wrong..its not giving me any error. but its not taking any users in cc:
    i am new to Abap oops..so please help me n this.
    the code i am using is
    CALL METHOD w_document->add_attachment
            EXPORTING
              i_attachment_type    = 'PDF'
              i_attachment_subject = w_att_name
              i_att_content_hex    = pdf_content.
    *add document to send request
          send_request->set_document( w_document ).
    if w_covsmtp is not initial.
    *--add recipient (e-mail address
          w_recipient = cl_cam_address_bcs=>create_internet_address(
              i_address_string = w_covsmtp ). " w_addr-e_mail ).
    endif.
    *-- add recipient cc1 (e-mail address)
    if w_cc_mail1 is not initial.
          w_recipient_cc1 = cl_cam_address_bcs=>create_internet_address(
              i_address_string = w_cc_mail1 ). " w_addr-e_mail ).
    endif.
    *--add recipient cc2(e-mail address)
    if w_cc_mail2 is not initial.
          w_recipient_cc1 = cl_cam_address_bcs=>create_internet_address(
              i_address_string = w_cc_mail2 ). " w_addr-e_mail ).
    endif.
    *-- add recipient cc3(e-mail address)
    if w_cc_mail3 is not initial.
          w_recipient_cc1 = cl_cam_address_bcs=>create_internet_address(
              i_address_string = w_cc_mail3 ). " w_addr-e_mail ).
    endif.
    if w_recipient is not initial.
    *--add recipient to send request
          send_request->add_recipient( i_recipient = w_recipient ).
    endif.
    *--add recipient cc1 to send request
    if w_recipient_cc1 is not initial.
          send_request->add_recipient( i_recipient = w_recipient_cc1 ).
    endif.
    *--add recipient cc2 to send request
    if w_recipient_cc2 is not initial.
          send_request->add_recipient( i_recipient = w_recipient_cc2 ).
    endif.
    *--add recipient cc3 to send request
    if w_recipient_cc3 is not initial.
          send_request->add_recipient( i_recipient = w_recipient_cc3 ).
    endif.
    send document -
          sent_to_all = send_request->send(
              i_with_error_screen = c_x ).
          IF sent_to_all = c_charx.
            IF gv_screen_display = c_charx.
              MESSAGE i022(so).
            ENDIF.
            w_sent = c_charx.
          ENDIF.
    Thanks in advance,
    Rohan

    Well, it's been a while since I have used these classes to send some email, but what about changing the order of the calls for creating internet address and adding recipient like this:
    *-- add recipient cc1 (e-mail address)
    if w_cc_mail1 is not initial.
    w_recipient_cc1 = cl_cam_address_bcs=>create_internet_address(
    i_address_string = w_cc_mail1 ). " w_addr-e_mail ).
    endif.
    if w_recipient is not initial.
    *--add recipient to send request
    send_request->add_recipient( i_recipient = w_recipient ).
    endif.

  • Sending mail with multiple recipients as one mail?

    The project I'm working on to migrate users to the new 7.x messaging platform keeps asking me to do some special configurations.
    I got this question today...
    xxxxxxxxxxxxxxxxxxxxxxxxx
    4. As inquired, when sent from SunMail to/copying multiple addresses, the outgoing email is replicated as many as the number of addressees
    (For example, if you are sending an email to 10 people, the email is sent as 10 emails)
    In the Exchange system, email to multiple recipients is replicated in the Top Mail Server. But in SunMail, such email is replicated to 10 emails when being sent.
    We want SunMail emails to remain as a single email when being sent and only to be replicated to each recipient in the Top Mail Server.
    This may be dependent on the specs of mail software, which means it may not be able to fix, but please confirm.
    xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    The "top mail server" is just some postoffice product, appliance type mta for sendmail.
    Is there anyways to pass along the email without expanding the recipients into individual mails?
    Thanks.
    -Ray

    Ray_Cormier wrote:
    Hey Kelly, longtime no chat. Thanks for such a detailed and informative answer. I read over the link, that explains a lot. The old system is a 6.3. Unfortunately I have a very limited access to the old production systems and can't do much. Otherwise information is like pulling teeth around here. I've copied over all the configuration files and I am going through that stuff now.I recommend you compare the old MS6.3 configuration with the new MS7u3 default (configuration) settings and make changes to the MS7u3 settings only where necessary. Using the old MS6.3 settings may no longer be appropriate for the new environment.
    I think the main thing here, is that the default behavior in the proposed 7.x system will give them the results they seek, does that sounds like a fair assumption?Taking a step back I question the initial statement:
    "4. As inquired, when sent from SunMail to/copying multiple addresses, the outgoing email is replicated as many as the number of addressees".
    From a strictly performance/storage perspective it makes no sense to "replicate" an email and the MTA goes to great lengths to avoid such replication where possible. Kelly has pointed out one scenario where replication will occur ("single" channel keyword) but this is not enabled by default (for good reason). There could be other causes e.g. conversion channel or sieve filters or spam filtering that operates at the envelope recipient level.
    So if this "replication" behaviour is occurring in the old environment then without understanding why it is occurring you cannot assume it won't occur in the new environment -- especially if you are copying across the old config files.
    Regards,
    Shane.

  • Sending mail to multiple recipients

    Hello friends,
    i have written java code for sending mail,its working fine for single mail address. if we include multiple mail address its giving ERROR:" Illegal route-addr in string" , so friends if there is any solution for this problem: please kindly reply. i have included sendmail->code and setproperty-> and the exact exception.
    SENDMAIL
    public boolean sendMail(User userObj, Message message, String content){
    try{
    util util=new util();
    String arr[]=util.getTokens(userObj.email,",");
    InternetAddress inetarr[]=new InternetAddress[arr.length];
    for(int i=0;i<arr.length;i++){
    inetarr=new InternetAddress(arr[i].toString());
    message.setRecipients(Message.RecipientType.TO, inetarr);
    MimeMultipart multipart=new MimeMultipart();
    BodyPart msgBodyPart=new MimeBodyPart();
    msgBodyPart.setContent(content, "text/html");
    multipart.addBodyPart(msgBodyPart);
    message.setContent(multipart);
    message.setSentDate(new Date());
    Transport.send(message);
    return true;
    }catch(Exception e){
    e.printStackTrace();
    return false;
    }//End Of The Method
    GETPROPRITIES
    protected Properties getProperties(){
         Properties props = new Properties();
         props.put("mail.smtp.starttls.enable","true");
         props.put("mail.transport.protocol", "smtp");
         props.put("mail.smtp.host", adminObj.info.server[0]);
         props.put("mail.smtp.port",adminObj.info.server_port[0]+"");
         props.put("mail.debug","false");
         props.put("mail.smtp.auth", "true");
         props.put("mail.smtp.quitwait", "false");
    props.put("mail.smtp.sendpartial", "true");
         return props;
    }//End Of The Method
    Exception
    javax.mail.internet.AddressException: Illegal route-addr in string ``saravana.07
    @gmail.com,[email protected]''
    at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java
    :883)
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:819)
    at javax.mail.internet.InternetAddress.parseHeader(InternetAddress.java:
    580)
    at javax.mail.internet.MimeMessage.getAddressHeader(MimeMessage.java:680
    at javax.mail.internet.MimeMessage.getFrom(MimeMessage.java:340)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:897)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
    at javax.mail.Transport.send0(Transport.java:169)
    at javax.mail.Transport.send(Transport.java:98)
    at common.application.utilities.TenderMail.sendMail(TenderMail.java:483)
    at common.application.mail.send_user_mail.__BodhiReceive(send_user_mail.
    java:146)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at jdbs.BodhiServer.callStation(Unknown Source)
    at jdbs.BodhiSend.doSend(Unknown Source)
    at common.application.mail.sendmail.__BodhiReceive(sendmail.java:361)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at JumpForwarder1.callStation(JumpForwarder1.java:863)
    at JumpForwarder1.processRequest(JumpForwarder1.java:613)
    at JumpForwarder1.authenticateUserAndExecute(JumpForwarder1.java:254)
    at JumpForwarder1.doPost(JumpForwarder1.java:132)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
    icationFilterChain.java:284)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
    ilterChain.java:204)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
    alve.java:257)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:151)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
    a:567)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(Standard
    ContextValve.java:245)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
    alve.java:199)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:151)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
    torBase.java:509)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:149)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
    a:567)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
    ava:184)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:151)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
    ava:164)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:149)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
    a:567)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
    ve.java:156)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValv
    eContext.java:151)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
    a:567)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:20
    6)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
    :833)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
    ssConnection(Http11Protocol.java:732)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
    :619)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
    ool.java:688)
    at java.lang.Thread.run(Thread.java:534)

    You seem to be splitting a string containing multiple addresses and constructing
    InternetAddress objects for each entry. But looking at the address it's complaining
    about, it looks like you failed to split the string properly. You might want to use the
    InternetAddress.parse method that will do the splitting for you.

  • Unable to send mail to multiple recipients with attachment

    I'm using a script given in the Oracle page - http://www.oracle.com/technology/sample_code/tech/pl_sql/htdocs/maildemo_sql.txt for sending mail with attachment. Although I'm able to send mail with attachment to a single user, but the same can't be done while the recipients are more than one. Can some one help me ?

    Hi,
    Ca you please send me an example set of parameteres that we need to pass to make this program work?
    I'm not able to attach a file to this program.Can youe please let me know how I can attach a file called 'Test.txt' kept at 'D:\' to this program?
    Thanks.
    Bhavin

  • How to send mail to multiple recipients?

    Pre Mavericks, I could open contacts book, select all contacts, drag over to the BCC field in an email and hit send.  Can't do it post Mavericks installation.  Why?

    I figured it out!  Type the name of the group in the BCC field and click on it from the drop down menu.  All recipients within that group appear.  Hit send.

  • I have to send mail to multiple recipients. Is there a group send with Thunderbird as I have delivery problems.

    My email is a yahoo account. The yahoo help advises I create a group then I won't have the problem. Can I do this in Thunderbird or do I have to use yahoo?

    Yes, you can define a group (such as a family) within your address book. Then you can use that group name in addressing an email.

  • PROBLEM WHILE SENDING MAILS TO MUTILPLE RECIPIENTS

    hi,
    while sending mails to multiple recipients,if any one of the mail id is invalid the mail is not being send to other valid mailids,how can this problem be resolved , so that other than the invalid recipient mail has to be send to other valid mailids

    COULD YOU PLEASE STOP SHOUTING?
    CAN YOU TALK LOUDER, I CAN'T HEAR YOU!

  • Mail to multiple recipients in sent mail index

    When I send mail to multiple recipients (all in the "To:" field), for some reason when I view the Sent index, only the first recipient shows up. (If I open the message, I see all recipients listed.)
    In Mail version 1, which I had been running on a prevoius machine with 10.2.8, all the recipients would appear in the sent mail index.
    For example, let's say I email Joe, Tom, Gary. If I go to the Sent mailbox, I only see "Joe" in the "To" column. Before, I'd see "Joe, Tom, Gary."
    Any way to change a setting to restore this? It makes it easier to see to whom I sent what.

    use string tokenizer to tokenize the string and then use this in ur smtp coding
    message.addRecipients(Message.RecipientType.TO, to)
    where 'message' is object of MimeMessage
    and 'to' is array of Address
    ex:-
    Address[] to = new Address[count];
    Earlier u must be using message.addRecipient(Message.RecipientType.TO, to)
    where to is object of Address.
    Sample code:-
    suppose String posted from ur form is :-
    to = "[email protected],[email protected],[email protected]"
    StringTokenizer toAdd = new StringTokenizer(to,",");
    Address[] address=new Address[toAdd.countTokens()];     
    int j=0;
    while(toAdd.hasMoreTokens()){
    address[j]=(new InternetAddress(toAdd.nextToken()));
    j++;
    }

  • Sending mail to multiple dynamic mail ids

    Hi Everyone,
    I have one query regarding sending mail to multiple table entry mail IDs. This table data I am getting from custom BO method vie multiline container element.
    Now my problem is I am getting Multiple mail IDs to workflow container from BO but  dont know how to send mails to those IDs and binding required for Send Mail step.
    Thanks.

    Hello,
    Please search before posting questions.
    Please google 'sap workflow send mail to multiple recipients' and you will find many responses.
    Let us know if there are any problems.
    regards
    Rick Bakker

  • Send e-mail to multiple recipients that are entered in a form

    Hello,
    I wonder if somebody could help me...at least with the clue to do the following.
    I have a form, with a textarea , where the people should put the e-mail addreses of all the people that, later will receive all the form data via e-mail..
    I do not know how to retrieve all these e-mail addresses from the textarea (format?) and then how to send the e-mail to multiple recipients .
    It works for one...but I do not know how to do this for several recipients...
    could you please help?

    use string tokenizer to tokenize the string and then use this in ur smtp coding
    message.addRecipients(Message.RecipientType.TO, to)
    where 'message' is object of MimeMessage
    and 'to' is array of Address
    ex:-
    Address[] to = new Address[count];
    Earlier u must be using message.addRecipient(Message.RecipientType.TO, to)
    where to is object of Address.
    Sample code:-
    suppose String posted from ur form is :-
    to = "[email protected],[email protected],[email protected]"
    StringTokenizer toAdd = new StringTokenizer(to,",");
    Address[] address=new Address[toAdd.countTokens()];     
    int j=0;
    while(toAdd.hasMoreTokens()){
    address[j]=(new InternetAddress(toAdd.nextToken()));
    j++;
    }

  • Sending mail with multiple attachment

    hi.
    i want to send mail with multiple attachment.
    i m succeed in sending multiple attachment but the second pdf is not open.
    its given error like "This file is damaged and could not be open.
    pls check my code. and
    give the solution....
    point should be assured...........
    hope all u r understand my problem..
    & tell me where is i m missing something.
    REPORT  YSDPASALE1_MAIL LINE-SIZE 110.
    data : year_month(6) type c.
    data : from_date like sy-datum,to_date like sy-datum.
    INITIALIZATION.
    year_month = sy-datum+0(6).
    CONCATENATE year_month '01' into from_date.
    to_date = sy-datum.
    ranges : temp for mkpf-budat.
    temp-low = from_date.
    temp-high = to_date.
    append temp to temp.
    DATA: P_JOBCNT LIKE TBTCJOB-JOBCOUNT,
           jobname like TBTCJOB-JOBNAME,
           L_RELEASE(1) TYPE c.
    CONSTANTS : l_c_device(4)    VALUE 'LOCL'.
    DATA : t type i value 0.
    DATA : p_email1 like somlreci1-receiver,
            p_sender LIKE somlreci1-receiver.
    Data Declaration
    DATA: gd_recsize TYPE i,gd_recsize1 TYPE i.
    Spool IDs
    TYPES: BEGIN OF t_tbtcp.
            INCLUDE STRUCTURE tbtcp.
    TYPES: END OF t_tbtcp.
    DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
          wa_tbtcp TYPE t_tbtcp.
    Job Runtime Parameters
    DATA: gd_eventid LIKE tbtcm-eventid,
          gd_eventparm LIKE tbtcm-eventparm,
          gd_external_program_active LIKE tbtcm-xpgactive,
          gd_jobcount LIKE tbtcm-jobcount,
          gd_jobname LIKE tbtcm-jobname,
          gd_stepcount LIKE tbtcm-stepcount,
          gd_error    TYPE sy-subrc,
          gd_reciever TYPE sy-subrc.
    DATA:  w_recsize TYPE i.
    DATA: gd_subject  LIKE sodocchgi1-obj_descr,
          it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          it_mess_att1 LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          it_mess_att2 LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          gd_sender_type     LIKE soextreci1-adr_typ,
          gd_attachment_desc TYPE so_obj_nam,
          gd_attachment_desc1 TYPE so_obj_nam,
          gd_attachment_name TYPE so_obj_des,
          gd_mtitle LIKE sodocchgi1-obj_descr.
    Spool to PDF conversions
    DATA: gd_spool_nr LIKE tsp01-rqident,
          gd_destination LIKE rlgrap-filename,
          gd_bytecount LIKE tst01-dsize,
          gd_buffer TYPE string.
    CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',
               c_no(1)     TYPE c   VALUE ' ',
               c_device(4) TYPE c   VALUE 'LOCL'.
    Binary store for PDF
    DATA: BEGIN OF it_pdf_output OCCURS 0.
            INCLUDE STRUCTURE tline.
    DATA: END OF it_pdf_output.
    DATA: BEGIN OF mailstr OCCURS 0,
            p_email like somlreci1-receiver,
          END OF mailstr.
    DATA: mailtab like STANDARD TABLE OF mailstr WITH HEADER LINE.
    DATA: ypp18tab like STANDARD TABLE OF mailstr WITH HEADER LINE,
          ymis008tab like STANDARD TABLE OF mailstr WITH HEADER LINE,
          ysd15tab like STANDARD TABLE OF mailstr WITH HEADER LINE,
          ymis10tab like STANDARD TABLE OF mailstr WITH HEADER LINE.
    SUBMIT YSDPASALE1 with bdt in temp
                           to sap-spool
                          with line-size = '255'
                           with KEEP_IN_SPOOL = 'X'
                           with IMMEDIATELY = ' '
                           WITHOUT SPOOL DYNPRO
                           AND RETURN
       NEW-PAGE PRINT ON
       DESTINATION l_c_device
       IMMEDIATELY ' '
       KEEP IN SPOOL 'X'
       NEW LIST IDENTIFICATION 'X'
       NO DIALOG.
       new-page print off.
      IF sy-batch EQ 'X'.
        PERFORM get_job_details.
        PERFORM obtain_spool_id.
        PERFORM convert_spool_to_pdf.
        select yemail as p_email into CORRESPONDING FIELDS OF TABLE ymis008tab
          from ymail
          where ytcode = 'YMIS008'.
    ELSE.
       SKIP.
       WRITE:/ 'Program must be executed in background in-order for spool & mail sending',
               'request to be created.'.
      ENDIF.
    wait up to 3 seconds.
      submit YSD_MONTHLY_SALES
                                USING SELECTION-SET 'MAIL'
                                to sap-spool
                               with KEEP_IN_SPOOL = 'X'
                               with IMMEDIATELY = ' ' "SPACE
                               WITHOUT SPOOL DYNPRO
                               AND RETURN
       NEW-PAGE PRINT ON
       DESTINATION l_c_device
       IMMEDIATELY ' '
       KEEP IN SPOOL 'X'
       NEW LIST IDENTIFICATION 'X'
       NO DIALOG.
       new-page print off.
        IF sy-batch EQ 'X'.
        gd_attachment_desc1  = 'YMIS10'.
        gd_mtitle = 'Monthly Sales Report'.
        PERFORM get_job_details.
        PERFORM obtain_spool_id.
        PERFORM convert_spool_to_pdf1.
       loop at it_mess_att.
        move it_mess_att1 to it_mess_att.
        APPEND it_mess_att.
       endloop.
       APPEND LINES OF it_mess_att1 to it_mess_att.
       free it_mess_att1.
        it_mess_att[] = it_mess_att1[].
        insert LINES OF it_mess_att1 into it_mess_att.
        APPEND LINES OF it_mess_att2 to it_mess_att .
         insert LINES OF it_mess_att1 into it_mess_att.
         insert LINES OF it_mess_att2 into it_mess_att.
       loop at ymis008tab into mailstr.
         p_email1 = mailstr-p_email.
          p_email1 = '[email protected]'.
           PERFORM process_email.
       endloop.
           clear mailstr.
          wait up to 5 seconds.
          SUBMIT rsconn01 WITH mode   = 'INT'
                          WITH output = 'X'
                          AND RETURN.
      ELSE.
        SKIP.
      ENDIF.
          FORM obtain_spool_id                                          *
    FORM obtain_spool_id.
      CHECK NOT ( gd_jobname IS INITIAL ).
      CHECK NOT ( gd_jobcount IS INITIAL ).
      SELECT * FROM  tbtcp
                     INTO TABLE it_tbtcp
                     WHERE      jobname     = gd_jobname
                     AND        jobcount    = gd_jobcount
                     AND        stepcount   = gd_stepcount
                     AND        listident   <> '0000000000'
                     ORDER BY   jobname
                                jobcount
                                stepcount.
      READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
      IF sy-subrc = 0.
        message s004(zdd) with gd_spool_nr.
        gd_spool_nr = wa_tbtcp-listident.
        MESSAGE s004(zdd) WITH gd_spool_nr.
      ELSE.
        MESSAGE s005(zdd).
      ENDIF.
    ENDFORM.
          FORM get_job_details                                          *
    FORM get_job_details.
    Get current job details
      CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
           IMPORTING
                eventid                 = gd_eventid
                eventparm               = gd_eventparm
                external_program_active = gd_external_program_active
                jobcount                = gd_jobcount
                jobname                 = gd_jobname
                stepcount               = gd_stepcount
           EXCEPTIONS
                no_runtime_info         = 1
                OTHERS                  = 2.
    ENDFORM.
          FORM convert_spool_to_pdf                                     *
    FORM convert_spool_to_pdf.
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
           EXPORTING
                src_spoolid              = gd_spool_nr
                no_dialog                = c_no
                dst_device               = c_device
           IMPORTING
                pdf_bytecount            = gd_bytecount
           TABLES
                pdf                      = it_pdf_output
           EXCEPTIONS
                err_no_abap_spooljob     = 1
                err_no_spooljob          = 2
                err_no_permission        = 3
                err_conv_not_possible    = 4
                err_bad_destdevice       = 5
                user_cancelled           = 6
                err_spoolerror           = 7
                err_temseerror           = 8
                err_btcjob_open_failed   = 9
                err_btcjob_submit_failed = 10
                err_btcjob_close_failed  = 11
                OTHERS                   = 12.
      CHECK sy-subrc = 0.
    Transfer the 132-long strings to 255-long strings
      LOOP AT it_pdf_output.
        TRANSLATE it_pdf_output USING ' ~'.
        CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
      ENDLOOP.
      TRANSLATE gd_buffer USING '~ '.
      DO.
        it_mess_att = gd_buffer.
        APPEND it_mess_att.
        SHIFT gd_buffer LEFT BY 255 PLACES.
        IF gd_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.
    ENDFORM.
    FORM convert_spool_to_pdf1.
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
           EXPORTING
                src_spoolid              = gd_spool_nr
                no_dialog                = c_no
                dst_device               = c_device
           IMPORTING
                pdf_bytecount            = gd_bytecount
           TABLES
                pdf                      = it_pdf_output
           EXCEPTIONS
                err_no_abap_spooljob     = 1
                err_no_spooljob          = 2
                err_no_permission        = 3
                err_conv_not_possible    = 4
                err_bad_destdevice       = 5
                user_cancelled           = 6
                err_spoolerror           = 7
                err_temseerror           = 8
                err_btcjob_open_failed   = 9
                err_btcjob_submit_failed = 10
                err_btcjob_close_failed  = 11
                OTHERS                   = 12.
      CHECK sy-subrc = 0.
    Transfer the 132-long strings to 255-long strings
      LOOP AT it_pdf_output.
        TRANSLATE it_pdf_output USING ' ~'.
        CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
      ENDLOOP.
      TRANSLATE gd_buffer USING '~ '.
      DO.
        it_mess_att1 = gd_buffer.
        APPEND it_mess_att1.
        SHIFT gd_buffer LEFT BY 255 PLACES.
        IF gd_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.
    ENDFORM.
          FORM process_email                                            *
    FORM process_email.
      DESCRIBE TABLE it_mess_att LINES gd_recsize.
      DESCRIBE TABLE it_mess_att1 LINES gd_recsize1.
      CHECK gd_recsize > 0 or gd_recsize1 > 0.
      PERFORM send_email." USING p_email1.
    perform send_email using p_email2.
    ENDFORM.
          FORM send_email                                               *
    -->  p_email                                                       *
    FORM send_email." USING p_email.
    CHECK NOT ( p_email IS INITIAL ).
      REFRESH it_mess_bod.
    Default subject matter
      gd_subject         = 'Subject'.
      gd_attachment_desc = gd_attachment_desc1 .
    gd_attachment_desc = 'YPP18 - Daily Highlights'.
    CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
      it_mess_bod        = 'Dear Sir,'.
      APPEND it_mess_bod.
    it_mess_bod        = ' '.
    APPEND it_mess_bod.
      it_mess_bod        = ' '.
      APPEND it_mess_bod.
      it_mess_bod        = 'kindly find the attached document'.
      APPEND it_mess_bod.
    it_mess_bod        = ' '.
    APPEND it_mess_bod.
    it_mess_bod        = 'Do not reply on this mail, It is generated from SAP'.
    APPEND it_mess_bod.
    it_mess_bod        = ' '.
    APPEND it_mess_bod.
      it_mess_bod        = ' '.
      APPEND it_mess_bod.
      it_mess_bod        = 'Regards,'.
      APPEND it_mess_bod.
      it_mess_bod        = 'Arpit Shah'.
      APPEND it_mess_bod.
    If no sender specified - default blank
      IF p_sender EQ space.
        gd_sender_type  = space.
      ELSE.
        gd_sender_type  = 'INT'.
      ENDIF.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_mess_bod
                                          it_mess_att
                                          it_mess_att1
                                    using "p_email
                                          gd_mtitle
                                         'Testing mail generated from SAP'
                                         'Daily Highlights Abstract Report - YPP18'
                                          'PDF'
                                          gd_attachment_name
                                          gd_attachment_desc
                                          p_sender
                                          gd_sender_type
                                 changing gd_error
                                          gd_reciever.
    ENDFORM.
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables it_message
                                              it_attach
                                              it_attach1
                                        using "p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
    data:   t_packing_list like sopcklsti1 occurs 0 with header line,
            t_contents like solisti1 occurs 0 with header line,
            t_receivers like somlreci1 occurs 0 with header line,
            t_attachment like solisti1 occurs 0 with header line,
            t_object_header like solisti1 occurs 0 with header line,
            w_cnt type i,
            w_sent_all(1) type c,
            w_doc_data like sodocchgi1,w_doc_data1 like sodocchgi1.
    ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data1-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = it_attach[].
    For 2nd Attachments
    * Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach1 INDEX w_cnt.
      w_doc_data-doc_size = w_doc_data1-doc_size +
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach1 ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
    APPEND LINES OF it_attach1 to t_attachment.
      t_attachment[] = it_attach1[].
    APPEND LINES OF it_attach1 to t_attachment.
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 0.
      t_packing_list-body_start = 1.
    DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
    DESCRIBE TABLE it_mess_att LINES t_packing_list-body_num.
      DESCRIBE TABLE it_attach LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  'YMIS008'."ld_attdescription.
      t_packing_list-obj_name   =  'YMIS008'."ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
      clear t_packing_list.
    for 2 attachments
      data : a type i,b type i.
       a = t_packing_list-body_num.
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 0.
      t_packing_list-body_start = a + 1. "1
    DESCRIBE TABLE it_mess_att1 LINES t_packing_list-body_num.
      DESCRIBE TABLE it_attach1 LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  'YMIS10'."ld_attdescription.
      t_packing_list-obj_name   =  'YMIS10'."ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    a = t_packing_list-body_num.
    clear t_packing_list.
    * Create attachment notification
    t_packing_list-transf_bin = 'X'.
    t_packing_list-head_start = 1.
    t_packing_list-head_num   = 1.
    t_packing_list-body_start = a + 1.
    t_packing_list-body_num = t_packing_list-body_num + 1.
    DESCRIBE TABLE it_mess_att1 LINES t_packing_list-body_num.
    t_packing_list-body_num = a + t_packing_list-body_num .
    t_packing_list-doc_type   =  ld_format.
    t_packing_list-obj_descr  =  'YMIS10'."ld_attdescription.
    t_packing_list-obj_name   =  'YMIS10'."ld_attfilename.
    t_packing_list-doc_size   =  t_packing_list-body_num * 255.
    APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
    loop at ymis008tab into mailstr.
      t_receivers-receiver = mailstr-p_email.  "ld_email.
      t_receivers-receiver = p_email1.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'. "X   "Read Acknoledgement
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
    endloop.
       CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.
    Rgds.
    Arpit

    Hi Arpit,
    Take a look at the documentation of FM 'SO_DOCUMENT_SEND_API1' for parameter PACKING_LIST. I think you should set t_packing_list-head_num to a different value than 0 for the second attachment.
    Regards,
    John.

Maybe you are looking for

  • How to fix a major conflict of Firefox with LG monitor running Dual Smart screen control.

    PC: Dell Dimension E510 with MS windows XP professiona, Version 2002, Service Pack 3 Intel(R), Pentium (R) D CPU 2.8 GHz, 1.0 GB Ram. I have a new 23" LG monitor (23EN43T). LG's software for managing screen displays is called Dual Smart Solution, whi

  • Is it possible to rearrange the order of SAP STD Selection Screen?

    Hi. Is it possible to rearrange the order of SAP STD Selection Screen? Example: IW69 has Location data selection at bottom of screen.  Is it possible to move that to top of the selection screen? We are on ECC6.0. Thank you, Brett.

  • How to make the Sony HDR-HC3 work w/ you Mac.

    So I bought this amazing camera yesterday only to find out that true to form, Sony does NOT include ANY cables to transfer video from the tape to a computer (windows or Mac). They only supply a usb cable which only transfers pics from the memory stic

  • The Java VM terminated with a non-zero exit code.

    Hi,expert, I have got this error when I am trying to restart the sap Instance use command STARTSAP, The error log as below: ERROR => The Java VM terminated with a non-zero exit code. Please see SAP Note 940893 , section 'J2EE Engine exit codes' for a

  • Where to download Developer Studio

    Hi every one, I am trying to download developer studio from service market place. I have added the 5 parts of the download files into download basket but the basket shows me an error that I can only download it via Solution Manager Maintenance Optimi