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.
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