Conversion en mail

Tengo un problema cuando envío correos desde el servidor domino. Tengo un campo de texto enriquecido donde guardo el texto de mis noticias, pero cuando se envía el correo no me reconoce ni los acentos ni los saltos de línea (¿me pone? En vez de acentos). He probado con una bd de ejemplo para mandar correos y sí que me reconoce todo, por lo que creo que la configuración del servidor está bien, y que tengo algo mal configurado a nivel de bd (el problema es que no sé qué es). Si sabes qué puede ser lo que me falta por configurar.
1

1 Respuesta

33.500 pts. Hola, soy Raúl Peláez
OK!
Se me olvidó decirte lo de UTF-8 pasarlo a ISO-8859-15 que es el formato español para acentos ñ's y ç's. (Codifica caracteres en 2 bytes, UTF-8 en 1 byte)
Sobre el salto de linea mejor que lo hagas con un richtextstyle paragraf. Tiene un método que si no recuerdo mal hace un addnewline o algo así. Luego en el curro te lo miro.
Sobre lo del Outlook depende de la configuración que lo tengas, siempre se envía como html adjunto, es normal.
Gracias por la info, ya he solucionado lo de outlook express. En cuanto a lo de los saltos de línea en el texto enriquecido, no veo posible eso de usar addnewline. La cosa es que yo relleno ese campo cuando creo un nuevo documento, es decir, lo relleno a pelo escribiendo y dándole al enter para bajar de línea. El problema es la conversión que realiza el server cuando se envía el mail (quizá se pierden los saltos en esta línea... Call stream.WriteText(doc.texto)). Se tiene que poder hacer, porque ya te dije que en la plantilla de correo sí que va bien y lo rellenan igual que yo. Seguro que es una tontería, pero no lo veo de momento. De todos modos gracias por las respuestas!
Acabo de descubrir otro problema añadido. En MS outlook los correos se ven bien, pero en outlook express me salen como adjunto (un fichero htm adjunto). ¿Qué debería hacer para que se vea el mensaje directamente, sin adjuntos ni nada? (Por lo menos a mi me parece raro que en microsoft outlook salga bien y en el express no) Siento tanto mensaje, gracias!
Es difícil saber lo que puede pasar. Lo mejor sería que me escribieras el código principal aquí.
A mi parecer puede ser debido a que uses una librería externa SimpleMIME. Iss entonces está haciendo traducciones a HTML con lo cual deberías usar sintaxi HTML para los acentos. En caso de que lo hagas dando un formato de RichText te deberían ir los acentos a la primera. Podría pasarte algún código de ejemplo.
Con Iss usa sintaxi HTML
Option Public
Use "SimpleMIME"
Sub Initialize
Dim s As New notessession
Dim db As notesdatabase
Dim doc As notesdocument
Dim html As String
Set db = s.currentdatabase
Set doc = db.createdocument
doc.form = "Memo"
doc.sendto = "Davy Vanherbergen"
html = |This <i>is</i> an <b>example</b><p>|
html = html + |<font color=purple>Hello</font><p>|
Call addMimeItem( doc, "Body", html )
Call doc.send(False)
la librería la puedes encontrar en
http://www.notesoss.org/Projects/codebin/codebin.nsf/CodeByRating/4322A3203262705188256D5E0034329D/$file/SimpleMIME.lss
No uso la simplemime, aunque sí la probé anteriormente y mi código actual tiene parecido. Te pongo lo que hago en el agente básicamente, a ver si estoy haciendo alguna tontería y no me he dado cuenta:
sesion.ConvertMime = False
Set doc_mail=New NotesDocument(bd)
Set cuerpo=doc_mail.CreateMIMEEntity
Set cabecera=cuerpo.CreateHeader("Content-Type")
Call cabecera.SetHeaderVal("multipart/mixed")
Set cabecera=cuerpo.CreateHeader("Subject")
Call cabecera.SetHeaderVal("Notificacion")
Set child=cuerpo.CreateChildEntity
Set stream=sesion.CreateStream
Call stream.WriteText("Notificacion de correo<br><br>")
Call stream.WriteText(doc.texto)
Call child.SetContentFromText(stream,"text/html", ENC_NONE)
doc_mail.Form="Memo"
doc_mail.Principal="Admin"
doc_mail.Subject="Notificacion"
doc_mail.SendTo=doc.mail(0)
doc_mail.Send(False)
Call stream.Close
sesion.ConvertMime = True
Gracias!
He descubierto por qué no me salían los acentos. En esta linea:
Call child.SetContentFromText(stream,"text/html", ENC_NONE)
En lugar de "text/html" he puesto "text/html;charset=iso-8859-15" y sí que me muestra los acentos. Sin embargo, me sigue eliminando los saltos de linea que hay en el texto enriquecido. No creo que esto tenga que ver con la codificación de caracteres, ¿por qué puede ser que no me reconozca (o me elimine) los saltos de linea? Gracias!
Gracias, me ha servido de mucho tu ayuda.
He encontrado este código que puede que te vaya bien, me parece que te falta inicializar alguna propiedad del MIME
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim memo As NotesDocument
Dim body As NotesMIMEEntity
Dim header As NotesMIMEHeader
Dim child As NotesMIMEEntity
Dim stream As NotesStream
Dim recipient As String
Set db = s.CurrentDatabase
Set stream = s.CreateStream
s.convertmime = True
On Error Goto cleanup
Set dc = db.UnprocessedDocuments
Set doc = dc.getFirstDocument()
'SET STATUS FIELD TO "SENT"
While Not(doc Is Nothing)
Set memo = db.CreateDocument
'CREATE THE MEMO
Call memo.ReplaceItemValue("Form", "Memo")
Call memo.ReplaceItemValue("SendTo", doc.recipient(0))
Set body = memo.CreateMIMEEntity
'ADD SUBJECT HEADER
Set header = body.CreateHeader("Content-Type")
Call header.SetHeaderVal("multipart/relative")
Set header = body.CreateHeader("Subject")
Call header.SetHeaderVal("Pledge Reminder")
'ADD GREETING
Set child = body.CreateChildEntity
Call stream.WriteText("<font face=Verdana color=#000099 size=2>Dear " + doc.FirstName(0) + ":</font><br><br>")
Call stream.WriteText("<font face=Verdana color=#000099 size=2>Thank you for your recent commitment. Our records indicate that we have not yet received your pledge payment for:</font><br><br>")
Call stream.WriteText("<font face=Verdana color=#000099 size=2>Pledge Date: " + doc.PledgeDate(0) + "</font><br>")
Call stream.WriteText("<font face=Verdana color=#000099 size=2>Amount: $" + doc.PledgeAmount(0) + "</font><br><br>")
Call stream.WriteText("<font face=Verdana color=#000099 size=2>Thank you!</font>")
Call child.SetContentFromText(stream, "text/html", ENC_NONE)
Call stream.Truncate
doc.Status = "Sent"
Forall x In doc.recipient
Call memo.Send(False, x)
End Forall
Call doc.Save( False, True )
Set doc = dc.getNextDocument( doc )
Wend
cleanup:
s.ConvertMime = False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas