v3.0.x E-Mail-Versand mit Anhang über GXService

Thema wurde von extracross.com, 8. August 2016 erstellt.

  1. extracross.com

    extracross.com Mitglied

    Registriert seit:
    30. Dezember 2013
    Beiträge:
    8
    Danke erhalten:
    0
    Danke vergeben:
    1
    #1 extracross.com, 8. August 2016
    Zuletzt bearbeitet: 9. August 2016
    Hallo liebe Community / Entwickler,

    ich habe einen Cronjob, der einigen unserer Händler jeden Tag um Mitternacht eine Liste schickt, ob ein Artikel auf Lager ist, oder nicht.

    Dieses Skript funktionierte mit 2.1.4 problemlos.
    Nun mit GX3 versendet das Skript keine E-Mails mehr.
    Das Problem ist, dass ich einen Pfad zum Anhang angebe, Gambio aber den Anhang in einem Verzeichnis uploads/attachements erwartet, die Datei aber dort nicht hin kopiert.

    Ich habe auch die xtc_php_mail - funktion "nachgebaut", was natürlich zu keinem anderen Ergebnis führte.

    Hier der relevante Teil des Skripts:
    PHP:
    <?php
    if(!is_file("../lagerlisten/".$filename)){
       echo 
    "Fehler beim Schreiben der Lagerliste";
    }else{
       
    $emailanhang "../lagerlisten/".$filename;
    }

    //empfänger auslesen
    $lines file("../lagerlisten/empfaenger.txt");
    foreach(
    $lines as $email_adresse){

    $fehler 0;
     
       
    //versenden 
     
       /*neu mit GXService*/
       
    try
       {
       
    $emailService StaticGXCoreLoader::getService('Email');

         
    // Sender
         
    $sender MainFactory::create('EmailContact',
                        
    MainFactory::create('EmailAddress''info@xxx.xx'),
          
    MainFactory::create('ContactType'ContactType::SENDER),
          
    MainFactory::create('ContactName''Extracross Lagerliste'));

         
    // Recipient
         
    $recipient MainFactory::create('EmailContact',
          
    MainFactory::create('EmailAddress'trim((string)$email_adresse)),
          
    MainFactory::create('ContactType'ContactType::RECIPIENT),
          
    MainFactory::create('ContactName', (string)$email_adresse));
         
    // Subject & Content
         
    $subject MainFactory::create('EmailSubject''Extracross Lagerliste');
     
       
    $content MainFactory::create('EmailContent',(nl2br($email_text)));
     
       
    // Create Email Object
       
    $email $emailService->create($sender$recipient$subject$content);

       
    // Content Plain
       
    $email->setContentPlain(MainFactory::create('EmailContent'$email_text));
     
     
       
    // Reply To
         
    $reply_email_address 'info@xxx.xx';
         if(!empty(
    $reply_email_address))
         {
           
    $replyTo MainFactory::create('EmailContact'MainFactory::create('EmailAddress'$reply_email_address),
            
    MainFactory::create('ContactType'ContactType::REPLY_TO),
            
    MainFactory::create('ContactName', (string)$reply_name));
           
    $email->setReplyTo($replyTo);
         }

         
    // BCC Contacts
         
    $forwarding_to=array();
         if(!empty(
    $forwarding_to))
         {
           
    $email->setBcc(MainFactory::create('ContactCollection'));
           
    $bccAddressesArray explode(','$forwarding_to);
           foreach(
    $bccAddressesArray AS $emailAddress)
           {
             
    $bccContact MainFactory::create('EmailContact',
              
    MainFactory::create('EmailAddress'trim($emailAddress)),
              
    MainFactory::create('ContactType'ContactType::BCC),
              
    MainFactory::create('ContactName'''));
             
    $email->getBcc()->add($bccContact);
           }
         }
     
     
       
    // Attachments
         // EmailService does not currently use a display name for the attachments.
         
    $attachments MainFactory::create('AttachmentCollection');
       
         if(!empty(
    $emailanhang))
         {
         
             if(
    is_string($emailanhang))
             {
               
    $attachmentPath MainFactory::create('AttachmentPath', (string)$emailanhang);
               
    $attachments->add(MainFactory::create('EmailAttachment'$attachmentPath));
             
    print_r($attachments);
             }
           }
       
    //   }

       

         
    $email->setAttachments($attachments);

         
    // Stores and sends the email object.
         
    $emailService->send($email);
       
         
    $result true;
       
       }catch(
    Exception $ex)
       {
         
    $log LogControl::get_instance();
         
    $log->notice($ex->getMessage());
         
    $result false;
       }
       
    /*alt xtc_php_mail*/
       //if(xtc_php_mail('info@xxx.xx', 'Extracross Lagerliste', $email, $email, '', 'info@xxx.xx', 'Extracross',$emailanhang, '', 'Extracross Lagerliste', nl2br($email_text), $email_text)){
         
    if($result==true){
          
    // Alles ok
          
    echo "Lagerliste versendet an ".$email_adresse.'<br />'.PHP_EOL
       }else{
         
    $fehler 1;
         echo 
    "Fehler beim Versenden der Lagerliste an ".$email_adresse.'<br />'.PHP_EOL
       }
    }
    if(
    $fehler == 0){
       echo 
    PHP_EOL."<br />Alles OK!";
    }
    ?>
    Folgende Fehlermeldung wird im Log gespeichert:
    Code:
    2016-08-08 00:01:00 (3cd2028c52140914b0f125e61ba7b8f3) USER NOTICE: "Attachment file does not exist or is not a file: /www/htdocs/xxx/uploads/attachments/email_id_340-20160808_00_01_lagerliste.txt" in /www/htdocs/xxx/cronjobs/lagerliste.php:165
    
    backtrace:#0   File: /www/htdocs/xxx/cronjobs/lagerliste.php:165
    
    
    Request: GET /cronjobs/lagerliste.php
       - duration: ~811ms
       - server: Apache
       - server address: 85.13.145.93
       - user agent: cronBROWSE v0.92
       - remote address: 3cd2028c52140914b0f125e61ba7b8f3
    Handelt es sich hierbei um einen Bug oder muss man die Attachmentfunktion noch irgendwie anders aufrufen?
    Vielen Dank im Voraus für Eure Hilfe

    LG
    Steffi