Jelajahi Sumber

Add Escar (Echape caractere pour des requetes sql-server)

Sylvain RECLUS 5 tahun lalu
induk
melakukan
38d7963c39
5 mengubah file dengan 232 tambahan dan 28 penghapusan
  1. 0 0
      escar/README.txt
  2. 57 0
      escar/entry.go
  3. 0 0
      escar/newtest.txt
  4. 91 0
      escar/test.txt
  5. 84 28
      mailling/main.go

+ 0 - 0
escar/README.txt


+ 57 - 0
escar/entry.go

@@ -0,0 +1,57 @@
+package main
+
+import (
+	"bufio"
+	"fmt"
+	"io"
+	"log"
+	"os"
+	"strings"
+)
+
+func FileToStr(filename string) string {
+	var txtlines string
+	file, err := os.Open(filename)
+	if err != nil {
+		log.Panic(err)
+	}
+	scanner := bufio.NewScanner(file)
+	scanner.Split(bufio.ScanLines)
+	for scanner.Scan() {
+		txtlines += scanner.Text()
+	}
+	file.Close()
+	return txtlines
+}
+
+func convEscapeStr(str string) string {
+	var newStr string
+	newStr = str
+	newStr = strings.ReplaceAll(newStr, "\r\n", "")
+	newStr = strings.ReplaceAll(newStr, "\"", "\"\"")
+	newStr = strings.ReplaceAll(newStr, "'", """)
+	return newStr
+}
+
+func strToFile(str string, filename string) error {
+	file, err := os.Create(filename)
+	if err != nil {
+		return err
+	}
+	defer file.Close()
+	_, err = io.WriteString(file, str)
+	if err != nil {
+		return err
+	}
+	return file.Sync()
+}
+
+func main() {
+	fmt.Println("Hello, World!")
+	text := FileToStr("test.txt")
+	newText := convEscapeStr(text)
+	err := strToFile(newText, "newtest.txt")
+	if err != nil {
+		log.Fatal(err)
+	}
+}

File diff ditekan karena terlalu besar
+ 0 - 0
escar/newtest.txt


+ 91 - 0
escar/test.txt

@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>ASkE - Notification Jetons</title>
+</head>
+<body>
+    <table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 100%">
+        <tbody>
+            <tr>
+                <td>
+                     
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <table width="612" class="main_table" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color: #FFFFFF; background-image: url('https://dev.aske.evatar.fr/Pictures/background_email.png');">
+                        <tbody>
+                            <tr>
+                                <td>
+                                    <br /> 
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="center" valign="top">
+                                    <img src="https://dev.aske.evatar.fr/Pictures/aske_logo.png" width="180" style="border-style:solid; border-width:0px; display:block;" />
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="center">
+                                    <span class="arial_main">
+                                        <br />Bonjour,
+                                    </span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="center" style="padding:22px; text-align: center;">
+                                    <span class="arial_main">
+                                        Nous sommes heureux de voir qu’ASkE réponde à vos besoins d’évaluation! <br/><font style="font-weight:bolder;">Suite à votre utilisation de la plateforme, nous vous informons que vous avez utilisé plus de 90% des jetons disponibles sur le domaine {0} que vous aviez acquis lors de votre dernière commande.</font>
+                                    </span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="center">
+                                    <span class="arial_main">
+                                        Votre solde à ce jour est de {1} jetons.
+                                    </span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="center">
+                                    <span class="arial_main">
+                                        <br />Pour recommander rapidement des jetons, il vous suffit de nous en faire la demande en cliquant simplement ici :
+                                        <br /><a href="mailto:support@aske-futurskill.com">support@aske-futurskill.com</a>
+                                    </span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="center">
+                                    <span class="arial_main">
+                                        <br />Si vous souhaitez faire un point plus approfondi sur l’utilisation d’ASkE par vous et/ou votre équipe ainsi que connaître les nouvelles fonctionnalités et les nouveaux outils, n’hésitez pas à contacter Coralie BRUN : <a href="mailto:coralie.brun@futurskill.fr">coralie.brun@futurskill.fr</a> / 06 30 21 05 91<br/>Dès votre nouvelle commande, nous mettrons à jour votre solde de jetons.
+                                    </span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="center">
+                                    <span class="arial_main">
+                                        <br />D’ici-là, nous vous souhaitons une agréable journée et au plaisir de vous retrouver sur ASkE !
+                                    </span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="center">
+                                    <span class="arial_main">
+                                        <br />L’équipe ASkE
+                                    </span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td align="right" valign="top" style="padding-right:22px; padding-bottom:10px;">
+                                    <img src="https://dev.aske.evatar.fr/Pictures/talent_solution.png" width="130" style="border-style:solid; border-width:0px; display:block;" />
+                                </td>
+                            </tr>
+                        </tbody>
+                    </table>
+                </td>
+            </tr>
+        </tbody>
+    </table>
+</body>
+</html>

+ 84 - 28
mailling/main.go

@@ -2,19 +2,20 @@ package main
 
 import (
 	"bufio"
+	"fmt"
+	"io/ioutil"
 	"log"
 	"os"
 	"regexp"
 	"strings"
-	"time"
 
-	mail "github.com/xhit/go-simple-mail"
-	//"github.com/xhit/go-simple-mail/v2"
+	"github.com/sendgrid/sendgrid-go"
+	"github.com/sendgrid/sendgrid-go/helpers/mail"
 )
 
 //SEE https://github.com/xhit/go-simple-mail
 
-// CheckAddressMaillist
+// CheckAddressMaillist ...
 func CheckAddressMaillist(maillist string) string {
 	strings.Replace(maillist, "noreply@aske-futurskill.com;", "", -1)
 	maillistArray := strings.Split(maillist, ";")
@@ -34,7 +35,7 @@ func CheckAddressMaillist(maillist string) string {
 	return newMaillist
 }
 
-// GetMailtoFile
+// GetMailtoFile ...
 func GetMailtoFile(filename string) []string {
 	file, err := os.Open(filename)
 	if err != nil {
@@ -51,36 +52,88 @@ func GetMailtoFile(filename string) []string {
 	return txtlines
 }
 
-// PrepareMail ...
-func PrepareMail(email string, htmlBody string, imageList []string) *mail.Email {
-	email := mail.NewMSG()
-
-	email.SetFrom("From Support ASkE <noreply@aske-futurskill.com>")
-	email.AddTo("support@aske-futurskill.com")
-	email.AddBcc(maillingList)
-	email.SetSubject("[TEST] MAILLING")
+// FileHTMLToString ...
+func FileHTMLToString(filehtml string) string {
+	b, err := ioutil.ReadFile(filehtml) // just pass the file name
+	if err != nil {
+		fmt.Print(err)
+	}
+	return string(b)
+}
 
-	email.SetBody(mail.TextHTML, htmlBody)
-	for image := range imageList {
-		email.AddInline(string.Split(imageList, ';')[0], string.Split(imageList, ';')[1])
+func main() {
+	filemail := os.Args[1]
+	subject := os.Args[2]
+	filehtml := os.Args[3]
+
+	from := mail.NewEmail("Support ASkE", "noreply@aske-futurskill.com")
+	subject := subject
+	to := mail.NewEmail("Example User", "test@example.com")
+	plainTextContent := "and easy to do anywhere, even with Go"
+	htmlContent := "<strong>and easy to do anywhere, even with Go</strong>"
+	message := mail.NewSingleEmail(from, subject, to, plainTextContent, htmlContent)
+	client := sendgrid.NewSendClient(os.Getenv("SENDGRID_API_KEY"))
+	response, err := client.Send(message)
+	if err != nil {
+		log.Println(err)
+	} else {
+		fmt.Println(response.StatusCode)
+		fmt.Println(response.Body)
+		fmt.Println(response.Headers)
 	}
-	return email
 }
 
+/*
+func main() {
+	filemail := os.Args[1]
+	subject := os.Args[2]
+	filehtml := os.Args[3]
+
+	bodyHTML := FileHTMLToString(filehtml)
+	maillingList := GetMailtoFile(filemail)
+	for _, email := range maillingList {
+		mailjetClient := mailjet.NewMailjetClient(os.Getenv("c4832eafdd5b13635a5d1273cb998d3f"), os.Getenv("ad985e178e340b85e192097b02026429"))
+		messagesInfo := []mailjet.InfoMessagesV31{
+			mailjet.InfoMessagesV31{
+				From: &mailjet.RecipientV31{
+					Email: "noreply@aske-futurskill.com",
+					Name:  "Support ASkE",
+				},
+				To: &mailjet.RecipientsV31{
+					mailjet.RecipientV31{
+						Email: email,
+					},
+				},
+				Subject:  subject,
+				HTMLPart: bodyHTML,
+			},
+		}
+		messages := mailjet.MessagesV31{Info: messagesInfo}
+		res, err := mailjetClient.SendMailV31(&messages)
+		if err != nil {
+			log.Fatal(err)
+		}
+		fmt.Printf("Data: %+v\n", res)
+	}
+}
+*/
+/*
 func main() {
 
-	filename := os.Args[1]
+	filemail := os.Args[1]
+	subject := os.Args[2]
+	filehtml := os.Args[3]
 
 	smtpServ := xmail.NewSMTPClient()
-	server.Host = "in-v3.mailjet.com"
-	server.Port = 587
-	server.Username = "c4832eafdd5b13635a5d1273cb998d3f"
-	server.Password = "ad985e178e340b85e192097b02026429"
-	server.Encryption = mail.EncryptionTLS
+	smtpServ.Host = "in-v3.mailjet.com"
+	smtpServ.Port = 587
+	smtpServ.Username = "c4832eafdd5b13635a5d1273cb998d3f"
+	smtpServ.Password = "ad985e178e340b85e192097b02026429"
+	smtpServ.Encryption = mail.EncryptionTLS
 
 	// smtpServ.Authentication = mail.AuthPlain
 
-	smtpServ.KeepAlive = false
+	smtpServ.KeepAlive = true
 	smtpServ.ConnectTimeout = 10 * time.Second
 	smtpServ.SendTimeout = 10 * time.Second
 
@@ -89,10 +142,12 @@ func main() {
 		log.Fatal(err)
 	}
 
-	maillingList := GetMailtoFile()
-	for email := range maillingList {
-		email := PrepareMail(email)
-		err = email.Send(smtpClient)
+	bodyHTML := FileHTMLToString(filehtml)
+	maillingList := GetMailtoFile(filemail)
+	for _, email := range maillingList {
+		fmt.Println(email)
+		mail := PrepareMail(email, subject, bodyHTML)
+		err = mail.Send(smtpClient)
 
 		if err != nil {
 			log.Println(err)
@@ -101,3 +156,4 @@ func main() {
 		}
 	}
 }
+*/

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini