Preciso enviar um pdf com correio, é possível?
$to = "xxx";
$subject = "Subject" ;
$message = 'Example message with <b>html</b>';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: xxx <xxx>' . "\r\n";
mail($to,$subject,$message,$headers);
o que estou perdendo?
mail()
função é muito mais difícil do que o esperado, por causa de seu tempo, tente usar PHPMailerRespostas:
Eu concordo com @MihaiIorga nos comentários - use o script PHPMailer. Parece que você está rejeitando porque deseja a opção mais fácil. Confie em mim, o PHPMailer é a opção mais fácil por uma margem muito grande em comparação com tentar fazer você mesmo com a
mail()
função interna do PHP . Amail()
função do PHP realmente não é muito boa.Para usar o PHPMailer:
require_once('path/to/file/class.phpmailer.php');
Agora, enviar e-mails com anexos deixa de ser incrivelmente difícil e incrivelmente fácil:
É apenas uma linha
$email->AddAttachment();
- você não poderia pedir mais fácil.Se você fizer isso com a
mail()
função do PHP , estará escrevendo pilhas de código e provavelmente terá muitos problemas realmente difíceis de encontrar.fonte
mail()
, mas para trabalhar com anexos é absolutamente óbvio.mail()
função para adicionar anexos. Esta resposta não me ajuda a fazer isso.Você pode tentar usar o seguinte código:
Editar 14 de junho de 2018
para maior legibilidade em parte do uso do provedor de email
$body .= $eol . $message . $eol . $eol;
e$body .= $eol . $content . $eol . $eol;
fonte
'Example message with <b>html</b>'
, então Content-Type deve sertext/html
, em vez detext/plain
. Estou postando o comentário em seu nome, pois ele não tem representante suficiente para postar comentários e sinalizei a resposta para exclusão.$file
depois de fazer referência a ele$filename
?Para atualização de segurança do PHP 5.5.27
fonte
$nmessage .= "--".$uid."\r\n";
e após a parte final MIME, use$nmessage .= "--".$uid."--";
(como mostrado acima).O Swiftmailer é outro script fácil de usar que protege automaticamente contra a injeção de e- mails e facilita a anexação. Também desencorajo fortemente o uso do PHP embutido
mail()
função.Usar:
lib
pasta no seu projetorequire_once 'lib/swift_required.php';
Agora adicione o código quando precisar enviar por email:
Mais informações e opções podem ser encontradas nos documentos do Swiftmailer .
fonte
Para enviar um email com anexo, precisamos usar o tipo MIME multipart / misto que especifica que os tipos mistos serão incluídos no email. Além disso, queremos usar o tipo MIME multipart / alternativo para enviar a versão em texto sem formatação e HTML do email.Veja o exemplo:
Como você pode ver, é fácil enviar um email com anexo. No exemplo anterior, temos o tipo MIME multipart / misto e, dentro dele, temos o tipo MIME multipart / alternativo que especifica duas versões do email. Para incluir um anexo em nossa mensagem, lemos os dados do arquivo especificado em uma string, codificamos com base64, dividimos em pedaços menores para garantir que correspondam às especificações MIME e os incluímos como anexo.
Tomado daqui .
fonte
Isso funciona para mim. Também anexa vários anexos também. facilmente
fonte
Depois de lutar por um tempo com anexos mal formatados, este é o código que eu usei:
fonte
Conceito de trabalho:
fonte
Nenhuma das respostas acima funcionou para mim devido ao formato de anexo especificado (
application/octet-stream
). Useapplication/pdf
para obter melhores resultados com arquivos PDF.fonte
"From: $from$eolMIME-Version: 1.0$eol"
por"From: $from" . "$eolMIME-Version: 1.0$eol"
$eol
por" . "$eol
dessa maneira, tudo é feito de uma só vez.fonte
Código HTML:
Código PHP:
fonte
Acabei escrevendo minha própria função de envio / codificação de email. Isso funcionou bem para mim no envio de anexos em PDF. Eu não usei os outros recursos na produção.
Nota: Apesar de as especificações serem bastante enfáticas que você deve usar \ r \ n para separar os cabeçalhos, achei que só funcionava quando usei o PHP_EOL. Eu só testei isso no Linux. YMMV
fonte
Copiar o código desta página - funciona no mail ()
Ele começa a criar uma função mail_attachment que pode ser chamada mais tarde. O que ele faz mais tarde com seu código de anexo.
Ele tem mais detalhes em sua página e responde a alguns problemas na seção de comentários.
fonte
Conceito 100% funcional para enviar email com anexo em php:
Eu usei esse código para o envio de e-mail do smtp do Google com anexo ....
Nota: Baixe a Biblioteca PHPMailer aqui -> https://github.com/PHPMailer/PHPMailer
fonte