Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v18.4
SMTP_transporter.send( )

SMTP_transporter.send( ) 


 

SMTP_transporter.send ( email ) -> Resultado 
Parâmetro Tipo   Descrição
email  Objeto in Email a enviar
Resultado  Objeto in Estado SMTP

O método SMTP_transporter.send( )  envia a mensagem eMail ao servidor SMTP definido no objeto transporter e retorna um estado de objeto .

Nota: O objeto transporter já deve ter sido criado usando o comando SMTP New transporter.

 

O método cria a conexão SMTP se ainda nâo estiver ativa. Se a propriedade keepAlive do objeto transportador for falsa, a conexão SMTP é fechada automaticamente depois da execução de SMTP_transporter.send( ), do contrário, permanece ativa até que o objeto transportador seja destruído. Para saber mais, consulte a descrição do comando SMTP New transporter.

Em eMail, passe um objeto email válido para enviar. As propriedades de origem (de onde vem o correio eletrônico) e de destino (um ou mais destinatários) devem ser incluídos, as propriedades restantes são opcionais. As propriedades compatíveis são:

PropriedadeTipoDescrição
fromTexto | Objeto | Coleção(*) Endereços de origem (**)
ccTexto | Objeto | Coleção(*)Cópia (CC). Destinatários adicionais de correio eletrônico
bccTexto | Objeto | Coleção(*)Copia invisível (BCC). Destinatarios de correio eletrônico ocultos
toTexto | Objeto | Coleção(*)Destinatarios primários
senderTexto | Objeto | Coleção(*)Endereços email de origem(**)
replyToTexto | Objeto | Coleção(*)Endereços para as respostas
subjectTexto Descrição do tema
textBodyTexto Texto plano de email (a codificação padrão é UTF-8)(***)
htmlBodyTexto Representação HTML de email (a codificação padrão é UTF-8)(***)
sendAtTextoMarca de tempo de email (UTCDate)
attachmentsColeçãoColeção de objets attachment, ver MAIL New attachment 
messageIdTextocabeçalho de identificador de mensagem ("message-id"). Geralmente "lettersOrNumbers@domainname", por exemplo, "abcdef.123456@4d.com". Esta identificação única se utiliza em particular em fóruns ou listas de correio públicas. Em geral, os servidores de correio agregam automaticamente este cabeçalho às mensagens que envíam.
inReplyToTextoIdentificadore de mensagem das mensagens originais aos que a mensagem atual é uma resposta (****).
referencesColeção de textoColeção de todos os identificadores de mensagem das mensagens na cadeia de resposta anterior (****).
keywordsObjetocabeçalho "keywords". Contém um conjunto de palavras chaves como um objeto, onde cada nome de propriedade é uma palavra chave e cada valor é verdadeiro. Ver RFC#4021.
[ ].<keyword>BooleanoPalavra chave a definir (o valor deve ser true). Ex:
 $mail.keywords["$flagged"]:=True
 $mail.keywords["4d"]:=True
commentsTextocabeçalho de comentários adicionais. Os comentários só aparecem na seção do cabeçalho da mensagem (mantenndo o cuerpo da mensagem intacto) (****).
headersColeção de objetosColeção de objetos EmailHeader, na ordem em que aparecem na mensagem. Permite aos usuários agregar cabeçalhos estendidos (registrados) ou cabeçalhos definidos pelo usuário (não registrados, começando com "X"). Nota: se uma propriedade de objeto EmailHeader define um cabeçalho como "from" ou "cc" que já está estabelecido como uma propriedade no nível de correio, a propriedade EmailHeader é ignorada.
[ ].nameTexto(orligatório) Nome de campo de cabeçalho como se define em RFC#5322. Se for nulo ou não definido, o campo de cabeçalho não é agregado ao cabeçalho MIME.
[ ].valueTextoNome de campo de cabeçalho como se define em RFC#5322

Nota: os campos de cabeçalho que começam com "Content-" NÃO devem ser especificadas no objeto mail.

As propriedades adicionais abaixo são usadas quando o objeto mail é construido a partir de um documento MIME por exemplo quando gerados pelo comando MAIL Convert from MIME. Neste caso, tanto as propriedades bodyStructure quanto bodyValues devem ser passadas juntas, e não é recomendado usar htmlBody e textBody.

bodyStructureObject(optional) Estrutura Full MIME do corpo da mensagem (objeto EmailBodyPart)
partIDTextIdentifica uma parte unicamente dentro do  email
typeText(mandatory) Valor do cabeçalho Content-Type da parte
charsetTextValor do parâmetro charset parameter do campo cabeçalho Content-Type
encodingTextse isEncodingProblem=true, o valor de Content-Transfer-Encoding é adicionado (como padrão é indefinido)
dispositionTextValor do campo cabeçalho Content-Disposition da parte
languageCollection of textsLista de tags de linguagem, como definidas em RFC3282, no campo cabeçalho Content-Language da parte, se presente.
locationTextURI, como definida em RFC2557, no campo cabeçalho Content-Location da parte, se presente.
subPartsCollection of objectsPartes do corpo para cada child (coleção de objetos  EmailBodyPart)
headersCollection of objectsLista de todos os campos cabeçalhos na parte, na ordem em que aparecem na mensagem (coleção de objetos EmailHeader objects, ver propriedade cabeçalho)
bodyValuesObject(opcional) objeto EmailBodyValue, contendo um objeto para cada  partID da bodyStructure
<partID>.valueTextValor da parte body
<partID>.isEncodingProblemBooleanTrue se seções malformadas forem encontradas enquanto se decodifica o  charset, ou charset desconhecido, ou conteúdo de  transferência-codificação desconhecido. False como padrão



Exemplo de objetos bodyStructure e bodyValues:

"bodyStructure": {
  "type": "multipart/mixed",
  "subParts": [
    {
      "partId": "p0001",
      "type": "text/plain"
    },
    {
      "partId": "p0002",
      "type": "text/html"
    }
  ]
},
"bodyValues": {
  "p0001": {
    "value": "I have the most brilliant plan. Let me tell you all about it."
  },
  "p0002": {
    "value": "<!DOCTYPE html><html><head><title></title><style type=\"text/css\">div{font-size:16px}</style></head><body><div>I have the most brilliant plan. Let me tell you all about it.</div></body></html>"
  }
}

 

(*) Todas as propriedades que contenham endereços de correio eletrônico (from, cc, bcc, to, sender, replyTo) aceitam um valor de texto, objeto ou tipo de coleção.

  • Texto:
    • email individual: "alguem@dominio.com"
    • visualização única nome+email: "Somebody <somebody@domain.com>"
    • vários emails: "alguem<alguien@dominio.com>,me@home.org"
  • Objeto:
    Um objeto com duas propriedades:
    PropriedadeTipoDescrição
    nameTextoNome a mostrar (pode ser nulo)
    emailTextoEndereço de correio eletrônico
  • Coleção:
    Uma coleção de objetos de endereço. 

(**) Cada correio eletrônico que envie tem ambos os endereços sender e from:

  • o domínio do remetente é aquele obtido pelo servidor de correio eletrônico receptor ao abrir a sessão,
  • o endereço from é o que verão os destinatários.
    Para uma melhor capacidade de entrega, é recomendado utilizar os mesmos endereços para from e sender.

(***) Se textBody e htmlBody estão cheios, é utilizada a multiparte/alternativa de tipo de conteúdo MIME. O cliente email deve reconhecer a parte multiparte/alternativa e mostrar a parte de texto ou a parte html segundo seja necessário. É recomendado que estas propriedades sejam omitidas se bodyStructure e bodyValues forem usados.

(****) Para necessidades específicas de formatação, consulte RFC#5322.

Objeto Devolvido

SMTP_transporter.send( ) devolve um objeto que descreve o estado SMTP da operação. Este objeto pode conter as propriedades abaixo:

PropriedadeTipoDescrição
successBooleanoTrue se a operação de envio for exitosa, False do contrário
codeNúmeroCódigo devolvido pelo servidor SMTP
messageTextoMensagem devolvida pelo servidor SMTP

Nota: para obter informação sobre os códigos de estado SMTP, vá a esta página.

Manejo de erros

No caso de um problema não relacionado ao processamento SMTP (por exemplo uma propriedade obrigatória falta no email), 4D gera um erro que pode interceptar usando um método instalado pelo comando ON ERR CALL. Use o comando GET LAST ERROR STACK para informação sobre o erro.

Em caso de um problema não relacionado com o processamento SMTP, 4D gera um erro e o objeto de estado resultante contém os valores abaixo:

  • success: false
  • code: 0
  • message: "Email Sending Failure"

 

 

Exemplo  

Este código construi e envia um correio eletrônico:

 C_OBJECT($server)
 $server:=New object
 $server.host:="mail.smtp.host" // Obrigatório
 $server.port:=25 // Opcional, valor predeterminado: 587
 
 $transporter:=SMTP New transporter($server)</p><p>C_COLLECTION($headers//adiciona cabeçalhos definidos pelo usuário
 $headers:=New collection
 $headers.push(New object("name";"X-MAILER";"value";"MySoftware"))
 $headers.push(New object("name";"X-4D-VERSION";"value";"17Rx"))</p><p>
 C_OBJECT($email)
 $email:=New object
 $email.subject:="my first mail"
 $email.to:="test.mail@4d.com"
 $email.from:="test.noreply@4d.com"
 $email.textBody:="this is a test"
 $email.attachments:=New collection(MAIL New attachment("schedule.xlsx"))
 $email.headers:=$headers
 $email.keywords:=New object("technical";True;"advanced";True;"useless";False)
 
 $status:=$transporter.send($email)
 If(Not($status.success))
    ALERT("Aconteceu um erro ao enviar o correio: "+$status.statusText)
 End if



Ver também 

MAIL Convert from MIME
MAIL Convert to MIME
MAIL New attachment
SMTP New transporter
SMTP_transporter.checkConnection( )

 
PROPRIEDADES 

Produto: 4D
Tema: Mail

Este comando modifica a variável sistema Error

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v17 R4
Modificado: 4D v17 R5

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v18)
Manual de linguagem 4D ( 4D v18.4)
Manual de linguagem 4D ( 4D v18.6)